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++) {
char *str;
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) {
fprintf(stderr, "failed test %d: %s != %s\n", numtest,
str, t->result);

View File

@@ -271,7 +271,7 @@ main(int argc, char **argv)
} else {
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]);
buflen = bufsz;
buf = d;

View File

@@ -58,7 +58,8 @@ main(int argc, char **argv)
for(t = tests; t->data; t++) {
char *str;
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) {
fprintf(stderr, "failed test %d: %s != %s\n", numtest,
str, t->result);

View File

@@ -214,7 +214,7 @@ main(int argc, char **argv)
err(1, "Could not read stdin");
} else {
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]);
buflen = bufsz;
buf = d;

View File

@@ -62,7 +62,8 @@ find_var(char **env, char *assignment, size_t len)
static int
read_env_file(FILE *F, char ***env, int *assigned)
{
int idx = 0;
size_t alloced = 0;
size_t idx = 0;
int i;
char **l;
char buf[BUFSIZ], *p, *r;
@@ -71,8 +72,11 @@ read_env_file(FILE *F, char ***env, int *assigned)
*assigned = 0;
for(idx = 0; *env != NULL && (*env)[idx] != NULL; idx++);
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
* Wietses sysv_environ from K4 was...
@@ -90,7 +94,11 @@ read_env_file(FILE *F, char ***env, int *assigned)
continue;
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) {
ret = ENOMEM;
break;
@@ -114,6 +122,7 @@ read_env_file(FILE *F, char ***env, int *assigned)
break;
}
l[++idx] = NULL;
alloced = idx + 1;
(*assigned)++;
}
if(ferror(F))

View File

@@ -43,7 +43,7 @@ main(int argc, char **argv)
int numtest = 1;
struct test {
void *data;
size_t len;
ssize_t len;
const char *result;
} *t, tests[] = {
{ "", 0 , "" },
@@ -55,26 +55,35 @@ main(int argc, char **argv)
{ "abcdef", 6, "616263646566" },
{ "abcdefg", 7, "61626364656667" },
{ "=", 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 }
};
for(t = tests; t->data; t++) {
ssize_t len;
char *str;
int len;
len = hex_encode(t->data, t->len, &str);
if(strcmp(str, t->result) != 0) {
fprintf(stderr, "failed test %d: %s != %s\n", numtest,
str, t->result);
numerr++;
}
free(str);
if (t->len > -1) {
(void) hex_encode(t->data, t->len, &str);
if (strcmp(str, t->result) != 0) {
fprintf(stderr, "failed test %d: %s != %s\n", numtest,
str, t->result);
numerr++;
}
free(str);
}
str = strdup(t->result);
len = strlen(str);
len = hex_decode(t->result, str, len);
if(len != t->len) {
fprintf(stderr, "failed test %d: len %lu != %lu\n", numtest,
(unsigned long)len, (unsigned long)t->len);
if (len != t->len) {
fprintf(stderr, "failed test %d: len %lu != %ld\n", numtest,
(long)len, (long)t->len);
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);
numerr++;
}

View File

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

View File

@@ -50,7 +50,8 @@ main(void)
char buf2[MAX_PATH * 2];
int ret = 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 &&
(s = roken_get_username(buf, sizeof(buf))) == NULL) {

View File

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