projects
/
project
/
netifd.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
f04430a
)
Don't segfault with an unset ula_prefix
author
Steven Barth
<steven@midlink.org>
Tue, 22 Jan 2013 15:42:40 +0000
(16:42 +0100)
committer
Steven Barth
<steven@midlink.org>
Tue, 22 Jan 2013 15:42:40 +0000
(16:42 +0100)
interface-ip.c
patch
|
blob
|
history
diff --git
a/interface-ip.c
b/interface-ip.c
index
892631d
..
ea4c3dd
100644
(file)
--- a/
interface-ip.c
+++ b/
interface-ip.c
@@
-634,12
+634,18
@@
void
interface_ip_set_ula_prefix(const char *prefix)
{
char buf[INET6_ADDRSTRLEN + 4] = {0}, *saveptr;
interface_ip_set_ula_prefix(const char *prefix)
{
char buf[INET6_ADDRSTRLEN + 4] = {0}, *saveptr;
- strncpy(buf, prefix, sizeof(buf) - 1);
+ if (prefix)
+ strncpy(buf, prefix, sizeof(buf) - 1);
char *prefixaddr = strtok_r(buf, "/", &saveptr);
struct in6_addr addr;
char *prefixaddr = strtok_r(buf, "/", &saveptr);
struct in6_addr addr;
- if (!prefixaddr || inet_pton(AF_INET6, prefixaddr, &addr) < 1)
+ if (!prefixaddr || inet_pton(AF_INET6, prefixaddr, &addr) < 1) {
+ if (ula_prefix) {
+ interface_update_prefix(NULL, NULL, &ula_prefix->node);
+ ula_prefix = NULL;
+ }
return;
return;
+ }
int length;
char *prefixlen = strtok_r(NULL, ",", &saveptr);
int length;
char *prefixlen = strtok_r(NULL, ",", &saveptr);