projects
/
project
/
netifd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Don't segfault with an unset ula_prefix
[project/netifd.git]
/
interface-ip.c
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);