gettimeofday(&rdat.tv, NULL);
fd = open("/dev/urandom", O_RDONLY);
if (fd != -1) {
- n = read(fd, rdat.rnd, sizeof(rdat.rnd));
+ (void)read(fd, rdat.rnd, sizeof(rdat.rnd));
close(fd);
}
int
closefrom(int fd)
{
- int max = getdtablesize();
- int i;
- int r = 0;
+ int i, max, r;
#ifdef _SC_OPEN_MAX
max = sysconf(_SC_OPEN_MAX);
#else
max = getdtablesize();
#endif
+ r = 0;
for (i = fd; i < max; i++)
r += close(i);
return r;
syslog(LOG_ERR, "%s: %m", __func__);
return -1;
}
- memcpy(status, p, len);
+ if (p)
+ memcpy(status, p, len);
status[len] = '\0';
syslog(LOG_ERR, "%s: DHCPv6 REPLY: %s", ifp->name, status);
free(status);
continue;
for (nlm = (struct nlmsghdr *)(void *)buf;
- NLMSG_OK(nlm, (size_t)bytes);
+ nlm && NLMSG_OK(nlm, (size_t)bytes);
nlm = NLMSG_NEXT(nlm, bytes))
{
r = callback(ctx, nlm);
return NULL;
}
p = strchr(match, '=');
- if (p)
- *p++ = '\0';
+ if (p == NULL) {
+ syslog(LOG_ERR, "%s: no assignment: %s", __func__, value);
+ free(match);
+ return NULL;
+ }
+ *p++ = '\0';
l = strlen(match);
while (lst && lst[i]) {
} else {
/* Append a space and the value to it */
l = strlen(lst[i]);
- lv = p ? strlen(p) : 0;
+ lv = strlen(p);
n = realloc(lst[i], l + lv + 2);
if (n == NULL) {
syslog(LOG_ERR, "%s: %m", __func__);
{
ssize_t i, j, e1;
char **ne, *eq, **nep, *p;
+ int ret;
if (config == NULL)
return 0;
ne = *env;
+ ret = 0;
for (i = 0; config[i] != NULL; i++) {
eq = strchr(config[i], '=');
e1 = eq - config[i] + 1;
if (strncmp(ne[j] + strlen(prefix) + 1,
config[i], e1) == 0)
{
+ p = make_var(prefix, config[i]);
+ if (p == NULL) {
+ ret = -1;
+ break;
+ }
free(ne[j]);
- ne[j] = make_var(prefix, config[i]);
- if (ne[j] == NULL)
- return -1;
+ ne[j] = p;
break;
}
}
if (j == *len) {
j++;
p = make_var(prefix, config[i]);
- if (p == NULL)
- return -1;
+ if (p == NULL) {
+ ret = -1;
+ break;
+ }
nep = realloc(ne, sizeof(char *) * (j + 1));
if (nep == NULL) {
syslog(LOG_ERR, "%s: %m", __func__);
- return -1;
+ free(p);
+ ret = -1;
+ break;
}
ne = nep;
ne[j - 1] = p;
}
}
*env = ne;
- return 0;
+ return ret;
}
#endif