chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
networkd: guard against NULL pointers
[elogind.git]
/
src
/
network
/
networkd-link.c
diff --git
a/src/network/networkd-link.c
b/src/network/networkd-link.c
index 63d253d94130e99fc6dbe86dc955cb455078af9d..f076525539bbbddd18cb7da5f826fa2891782790 100644
(file)
--- a/
src/network/networkd-link.c
+++ b/
src/network/networkd-link.c
@@
-1299,6
+1299,7
@@
static int link_getlink_handler(sd_rtnl *rtnl, sd_rtnl_message *m,
int r;
assert(link);
int r;
assert(link);
+ assert(link->ifname);
if (link->state == LINK_STATE_FAILED)
return 1;
if (link->state == LINK_STATE_FAILED)
return 1;
@@
-1510,11
+1511,16
@@
int link_update(Link *link, sd_rtnl_message *m) {
int link_save(Link *link) {
_cleanup_free_ char *temp_path = NULL;
_cleanup_fclose_ FILE *f = NULL;
int link_save(Link *link) {
_cleanup_free_ char *temp_path = NULL;
_cleanup_fclose_ FILE *f = NULL;
+ const char *state;
int r;
assert(link);
assert(link->state_file);
int r;
assert(link);
assert(link->state_file);
+ state = link_state_to_string(link->state);
+ if (!state)
+ goto finish;
+
r = fopen_temporary(link->state_file, &f, &temp_path);
if (r < 0)
goto finish;
r = fopen_temporary(link->state_file, &f, &temp_path);
if (r < 0)
goto finish;
@@
-1523,8
+1529,7
@@
int link_save(Link *link) {
fprintf(f,
"# This is private data. Do not parse.\n"
fprintf(f,
"# This is private data. Do not parse.\n"
- "STATE=%s\n",
- link_state_to_string(link->state));
+ "STATE=%s\n", state);
if (link->dhcp_lease) {
_cleanup_free_ char *lease_file = NULL;
if (link->dhcp_lease) {
_cleanup_free_ char *lease_file = NULL;