Check length of provided address label

This commit is contained in:
Thomas Graf 2008-05-14 23:08:06 +02:00
parent b4fbe1d34d
commit 0cf780859c
2 changed files with 8 additions and 3 deletions

View file

@ -42,7 +42,7 @@ extern int rtnl_addr_delete(struct nl_handle *,
extern char * rtnl_addr_flags2str(int, char *, size_t);
extern int rtnl_addr_str2flags(const char *);
extern void rtnl_addr_set_label(struct rtnl_addr *, const char *);
extern int rtnl_addr_set_label(struct rtnl_addr *, const char *);
extern char * rtnl_addr_get_label(struct rtnl_addr *);
extern void rtnl_addr_set_ifindex(struct rtnl_addr *, int);

View file

@ -850,10 +850,15 @@ int rtnl_addr_delete(struct nl_handle *handle, struct rtnl_addr *addr,
* @{
*/
void rtnl_addr_set_label(struct rtnl_addr *addr, const char *label)
int rtnl_addr_set_label(struct rtnl_addr *addr, const char *label)
{
strncpy(addr->a_label, label, sizeof(addr->a_label) - 1);
if (strlen(label) > sizeof(addr->a_label) - 1)
return -NLE_RANGE;
strcpy(addr->a_label, label);
addr->ce_mask |= ADDR_ATTR_LABEL;
return 0;
}
char *rtnl_addr_get_label(struct rtnl_addr *addr)