chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
eab97a4
)
udev: link-config - sanity check the ifname and mac address
author
Tom Gundersen
<teg@jklm.no>
Sun, 27 Oct 2013 22:09:05 +0000
(23:09 +0100)
committer
Tom Gundersen
<teg@jklm.no>
Sun, 27 Oct 2013 22:09:05 +0000
(23:09 +0100)
src/udev/net/link-config.c
patch
|
blob
|
history
diff --git
a/src/udev/net/link-config.c
b/src/udev/net/link-config.c
index 902ed0955d23bbd2c17549caeac4be181849e2e5..bb0640589be5160e26b6e66ee45219727e594265 100644
(file)
--- a/
src/udev/net/link-config.c
+++ b/
src/udev/net/link-config.c
@@
-20,6
+20,7
@@
***/
#include <netinet/ether.h>
***/
#include <netinet/ether.h>
+#include <net/if.h>
#include "link-config.h"
#include "link-config.h"
@@
-252,6
+253,8
@@
int link_config_get(link_config_ctx *ctx, struct udev_device *device, link_confi
static int rtnl_set_properties(sd_rtnl *rtnl, int ifindex, const char *name, const char *mac, unsigned int mtu) {
_cleanup_sd_rtnl_message_unref_ sd_rtnl_message *message;
static int rtnl_set_properties(sd_rtnl *rtnl, int ifindex, const char *name, const char *mac, unsigned int mtu) {
_cleanup_sd_rtnl_message_unref_ sd_rtnl_message *message;
+ char new_name[IFNAMSIZ];
+ struct ether_addr new_mac;
bool need_update;
int r;
bool need_update;
int r;
@@
-263,7
+266,8
@@
static int rtnl_set_properties(sd_rtnl *rtnl, int ifindex, const char *name, con
return r;
if (name) {
return r;
if (name) {
- r = sd_rtnl_message_append(message, IFLA_IFNAME, name);
+ strscpy(new_name, IFNAMSIZ, name);
+ r = sd_rtnl_message_append(message, IFLA_IFNAME, new_name);
if (r < 0)
return r;
if (r < 0)
return r;
@@
-271,7
+275,16
@@
static int rtnl_set_properties(sd_rtnl *rtnl, int ifindex, const char *name, con
}
if (mac) {
}
if (mac) {
- r = sd_rtnl_message_append(message, IFLA_ADDRESS, ether_aton(mac));
+ r = sscanf(mac, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
+ &new_mac.ether_addr_octet[0],
+ &new_mac.ether_addr_octet[1],
+ &new_mac.ether_addr_octet[2],
+ &new_mac.ether_addr_octet[3],
+ &new_mac.ether_addr_octet[4],
+ &new_mac.ether_addr_octet[5]);
+ if (r != 6)
+ return -EINVAL;
+ r = sd_rtnl_message_append(message, IFLA_ADDRESS, &new_mac);
if (r < 0)
return r;
if (r < 0)
return r;