roken: Fix warnings

This commit is contained in:
Nicolas Williams
2021-03-27 22:19:54 -05:00
parent 3a7c2c6a7f
commit a90e1cb65c
9 changed files with 69 additions and 35 deletions

View File

@@ -66,7 +66,8 @@ main(int argc, char **argv)
for(t = tests; t->data; t++) { for(t = tests; t->data; t++) {
char *str; char *str;
int len; int len;
len = rk_base32_encode(t->data, t->len, &str, t->preserve_order);
(void) rk_base32_encode(t->data, t->len, &str, t->preserve_order);
if (strcmp(str, t->result) != 0) { if (strcmp(str, t->result) != 0) {
fprintf(stderr, "failed test %d: %s != %s\n", numtest, fprintf(stderr, "failed test %d: %s != %s\n", numtest,
str, t->result); str, t->result);

View File

@@ -271,7 +271,7 @@ main(int argc, char **argv)
} else { } else {
void *d; void *d;
if ((ret = rk_undumpdata(argv[0], &d, &bufsz))) if ((errno = rk_undumpdata(argv[0], &d, &bufsz)))
err(1, "Could not read %s", argv[0]); err(1, "Could not read %s", argv[0]);
buflen = bufsz; buflen = bufsz;
buf = d; buf = d;

View File

@@ -58,7 +58,8 @@ main(int argc, char **argv)
for(t = tests; t->data; t++) { for(t = tests; t->data; t++) {
char *str; char *str;
int len; int len;
len = rk_base64_encode(t->data, t->len, &str);
(void) rk_base64_encode(t->data, t->len, &str);
if(strcmp(str, t->result) != 0) { if(strcmp(str, t->result) != 0) {
fprintf(stderr, "failed test %d: %s != %s\n", numtest, fprintf(stderr, "failed test %d: %s != %s\n", numtest,
str, t->result); str, t->result);

View File

@@ -214,7 +214,7 @@ main(int argc, char **argv)
err(1, "Could not read stdin"); err(1, "Could not read stdin");
} else { } else {
void *d; void *d;
if ((ret = rk_undumpdata(argv[0], &d, &bufsz))) if ((errno = rk_undumpdata(argv[0], &d, &bufsz)))
err(1, "Could not read %s", argv[0]); err(1, "Could not read %s", argv[0]);
buflen = bufsz; buflen = bufsz;
buf = d; buf = d;

View File

@@ -62,7 +62,8 @@ find_var(char **env, char *assignment, size_t len)
static int static int
read_env_file(FILE *F, char ***env, int *assigned) read_env_file(FILE *F, char ***env, int *assigned)
{ {
int idx = 0; size_t alloced = 0;
size_t idx = 0;
int i; int i;
char **l; char **l;
char buf[BUFSIZ], *p, *r; char buf[BUFSIZ], *p, *r;
@@ -71,8 +72,11 @@ read_env_file(FILE *F, char ***env, int *assigned)
*assigned = 0; *assigned = 0;
for(idx = 0; *env != NULL && (*env)[idx] != NULL; idx++);
l = *env; l = *env;
for (idx = 0; l != NULL && l[idx] != NULL; idx++)
;
if (l)
alloced = idx + 1;
/* This is somewhat more relaxed on what it accepts then /* This is somewhat more relaxed on what it accepts then
* Wietses sysv_environ from K4 was... * Wietses sysv_environ from K4 was...
@@ -90,7 +94,11 @@ read_env_file(FILE *F, char ***env, int *assigned)
continue; continue;
if((i = find_var(l, p, r - p + 1)) >= 0) { if((i = find_var(l, p, r - p + 1)) >= 0) {
char *val = strdup(p); char *val;
if ((size_t)i >= alloced)
continue; /* Doesn't happen (fix scan-build noise) */
val = strdup(p);
if(val == NULL) { if(val == NULL) {
ret = ENOMEM; ret = ENOMEM;
break; break;
@@ -114,6 +122,7 @@ read_env_file(FILE *F, char ***env, int *assigned)
break; break;
} }
l[++idx] = NULL; l[++idx] = NULL;
alloced = idx + 1;
(*assigned)++; (*assigned)++;
} }
if(ferror(F)) if(ferror(F))

View File

@@ -43,7 +43,7 @@ main(int argc, char **argv)
int numtest = 1; int numtest = 1;
struct test { struct test {
void *data; void *data;
size_t len; ssize_t len;
const char *result; const char *result;
} *t, tests[] = { } *t, tests[] = {
{ "", 0 , "" }, { "", 0 , "" },
@@ -55,26 +55,35 @@ main(int argc, char **argv)
{ "abcdef", 6, "616263646566" }, { "abcdef", 6, "616263646566" },
{ "abcdefg", 7, "61626364656667" }, { "abcdefg", 7, "61626364656667" },
{ "=", 1, "3D" }, { "=", 1, "3D" },
/* Embedded NUL, non-ASCII / binary */
{ "\0\x01\x1a\xad\xf1\xff", 6, "00011AADF1FF" },
/* Invalid encodings */
{ "", -1, "00.11AADF1FF" },
{ "", -1, "000x1AADF1FF" },
{ "", -1, "00011?ADF1FF" },
{ NULL, 0, NULL } { NULL, 0, NULL }
}; };
for(t = tests; t->data; t++) { for(t = tests; t->data; t++) {
ssize_t len;
char *str; char *str;
int len;
len = hex_encode(t->data, t->len, &str); if (t->len > -1) {
if(strcmp(str, t->result) != 0) { (void) hex_encode(t->data, t->len, &str);
fprintf(stderr, "failed test %d: %s != %s\n", numtest, if (strcmp(str, t->result) != 0) {
str, t->result); fprintf(stderr, "failed test %d: %s != %s\n", numtest,
numerr++; str, t->result);
} numerr++;
free(str); }
free(str);
}
str = strdup(t->result); str = strdup(t->result);
len = strlen(str); len = strlen(str);
len = hex_decode(t->result, str, len); len = hex_decode(t->result, str, len);
if(len != t->len) { if (len != t->len) {
fprintf(stderr, "failed test %d: len %lu != %lu\n", numtest, fprintf(stderr, "failed test %d: len %lu != %ld\n", numtest,
(unsigned long)len, (unsigned long)t->len); (long)len, (long)t->len);
numerr++; numerr++;
} else if(memcmp(str, t->data, t->len) != 0) { } else if (t->len > -1 && memcmp(str, t->data, t->len) != 0) {
fprintf(stderr, "failed test %d: data\n", numtest); fprintf(stderr, "failed test %d: data\n", numtest);
numerr++; numerr++;
} }

View File

@@ -39,14 +39,15 @@
static const char hexchar[16] = "0123456789ABCDEF"; static const char hexchar[16] = "0123456789ABCDEF";
static int static inline int
pos(char c) pos(char c)
{ {
const char *p; if (c >= '0' && c <= '9')
c = toupper((unsigned char)c); return c - '0';
for (p = hexchar; *p; p++) if (c >= 'A' && c <= 'F')
if (*p == c) return 10 + c - 'A';
return p - hexchar; if (c >= 'a' && c <= 'f')
return 10 + c - 'a';
return -1; return -1;
} }
@@ -86,6 +87,7 @@ hex_decode(const char *str, void *data, size_t len)
size_t l; size_t l;
unsigned char *p = data; unsigned char *p = data;
size_t i; size_t i;
int d;
l = strlen(str); l = strlen(str);
@@ -94,11 +96,19 @@ hex_decode(const char *str, void *data, size_t len)
return -1; return -1;
if (l & 1) { if (l & 1) {
p[0] = pos(str[0]); if ((d = pos(str[0])) == -1)
return -1;
p[0] = d;
str++; str++;
p++; p++;
} }
for (i = 0; i < l / 2; i++) for (i = 0; i < l / 2; i++) {
p[i] = pos(str[i * 2]) << 4 | pos(str[(i * 2) + 1]); if ((d = pos(str[i * 2])) == -1)
return -1;
p[i] = d << 4;
if ((d = pos(str[(i * 2) + 1])) == -1)
return -1;
p[i] |= d;
}
return i + (l & 1); return i + (l & 1);
} }

View File

@@ -50,7 +50,8 @@ main(void)
char buf2[MAX_PATH * 2]; char buf2[MAX_PATH * 2];
int ret = 0; int ret = 0;
if (!issuid() && getuid() != 0) { if (!issuid() && getuid() != 0) {
const char *s, *s2; const char *s = NULL;
const char *s2 = NULL;
if (getenv("USER") != NULL && strlen(getenv("USER")) != 0 && if (getenv("USER") != NULL && strlen(getenv("USER")) != 0 &&
(s = roken_get_username(buf, sizeof(buf))) == NULL) { (s = roken_get_username(buf, sizeof(buf))) == NULL) {

View File

@@ -440,16 +440,18 @@ rk_strrasvisx(char **out,
return -1; return -1;
} }
if (have < want) { if (have < want) {
if ((s = realloc(*out, want)) == NULL) if ((s = realloc(s, want)) == NULL)
return -1; return -1;
*outsz = want; *outsz = want;
*out = s; *out = s;
} }
if (*out == NULL) {
errno = EINVAL;
return -1;
}
**out = '\0'; /* Makes source debugging nicer, that's all */ **out = '\0'; /* Makes source debugging nicer, that's all */
if ((r = strsvisx(*out, csrc, len, flag, extra)) < 0) r = strsvisx(*out, csrc, len, flag, extra);
return r; return r;
errno = *out ? errno : EINVAL;
return *out ? r : -1;
} }
#if !HAVE_VIS #if !HAVE_VIS
@@ -641,6 +643,7 @@ main(int argc, char **argv)
} }
free(nextra); free(nextra);
free(s);
return 0; return 0;
} }
#endif #endif