summaryrefslogtreecommitdiffstats
path: root/lib/libc
diff options
context:
space:
mode:
authoreric <eric@openbsd.org>2017-02-17 22:24:45 +0000
committereric <eric@openbsd.org>2017-02-17 22:24:45 +0000
commit92f7551051a82acd2ab08ca85a8c34ce754565a5 (patch)
tree411a822e26cbf6701828876940b8d5ebcc26a3ba /lib/libc
parentregen (diff)
downloadwireguard-openbsd-92f7551051a82acd2ab08ca85a8c34ce754565a5.tar.xz
wireguard-openbsd-92f7551051a82acd2ab08ca85a8c34ce754565a5.zip
use common errnos instead of random strings as error indicators in
pack/unpack contexts. ok krw@ deraadt@
Diffstat (limited to 'lib/libc')
-rw-r--r--lib/libc/asr/asr_debug.c7
-rw-r--r--lib/libc/asr/asr_private.h6
-rw-r--r--lib/libc/asr/asr_utils.c18
3 files changed, 16 insertions, 15 deletions
diff --git a/lib/libc/asr/asr_debug.c b/lib/libc/asr/asr_debug.c
index 09ce456d599..0c5f2823331 100644
--- a/lib/libc/asr/asr_debug.c
+++ b/lib/libc/asr/asr_debug.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: asr_debug.c,v 1.22 2015/10/28 21:38:45 eric Exp $ */
+/* $OpenBSD: asr_debug.c,v 1.23 2017/02/17 22:24:45 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -24,6 +24,7 @@
#include <asr.h>
#include <resolv.h>
+#include <string.h>
#include "asr_private.h"
@@ -177,7 +178,7 @@ _asr_dump_packet(FILE *f, const void *data, size_t len)
_asr_unpack_init(&p, data, len);
if (_asr_unpack_header(&p, &h) == -1) {
- fprintf(f, ";; BAD PACKET: %s\n", p.err);
+ fprintf(f, ";; BAD PACKET: %s\n", strerror(p.err));
return;
}
@@ -215,7 +216,7 @@ _asr_dump_packet(FILE *f, const void *data, size_t len)
error:
if (p.err)
fprintf(f, ";; ERROR AT OFFSET %zu/%zu: %s\n", p.offset, p.len,
- p.err);
+ strerror(p.err));
}
const char *
diff --git a/lib/libc/asr/asr_private.h b/lib/libc/asr/asr_private.h
index 832e59cb39b..1bee3d9bde9 100644
--- a/lib/libc/asr/asr_private.h
+++ b/lib/libc/asr/asr_private.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: asr_private.h,v 1.40 2016/12/18 01:34:51 krw Exp $ */
+/* $OpenBSD: asr_private.h,v 1.41 2017/02/17 22:24:45 eric Exp $ */
/*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
*
@@ -34,14 +34,14 @@ struct asr_pack {
char *buf;
size_t len;
size_t offset;
- const char *err;
+ int err;
};
struct asr_unpack {
const char *buf;
size_t len;
size_t offset;
- const char *err;
+ int err;
};
struct asr_dns_header {
diff --git a/lib/libc/asr/asr_utils.c b/lib/libc/asr/asr_utils.c
index 44a89114f4a..835d5dfb448 100644
--- a/lib/libc/asr/asr_utils.c
+++ b/lib/libc/asr/asr_utils.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: asr_utils.c,v 1.13 2015/09/09 15:49:34 deraadt Exp $ */
+/* $OpenBSD: asr_utils.c,v 1.14 2017/02/17 22:24:45 eric Exp $ */
/*
* Copyright (c) 2009-2012 Eric Faurot <eric@faurot.net>
*
@@ -167,7 +167,7 @@ _asr_pack_init(struct asr_pack *pack, char *buf, size_t len)
pack->buf = buf;
pack->len = len;
pack->offset = 0;
- pack->err = NULL;
+ pack->err = 0;
}
void
@@ -176,7 +176,7 @@ _asr_unpack_init(struct asr_unpack *unpack, const char *buf, size_t len)
unpack->buf = buf;
unpack->len = len;
unpack->offset = 0;
- unpack->err = NULL;
+ unpack->err = 0;
}
static int
@@ -186,7 +186,7 @@ unpack_data(struct asr_unpack *p, void *data, size_t len)
return (-1);
if (p->len - p->offset < len) {
- p->err = "too short";
+ p->err = EOVERFLOW;
return (-1);
}
@@ -240,11 +240,11 @@ unpack_dname(struct asr_unpack *p, char *dst, size_t max)
e = dname_expand(p->buf, p->len, p->offset, &p->offset, dst, max);
if (e == -1) {
- p->err = "bad domain name";
+ p->err = EINVAL;
return (-1);
}
if (e < 0 || e > MAXDNAME) {
- p->err = "domain name too long";
+ p->err = ERANGE;
return (-1);
}
@@ -292,7 +292,7 @@ _asr_unpack_rr(struct asr_unpack *p, struct asr_dns_rr *rr)
return (-1);
if (p->len - p->offset < rdlen) {
- p->err = "too short";
+ p->err = EOVERFLOW;
return (-1);
}
@@ -350,7 +350,7 @@ _asr_unpack_rr(struct asr_unpack *p, struct asr_dns_rr *rr)
/* make sure that the advertised rdlen is really ok */
if (p->offset - save_offset != rdlen)
- p->err = "bad dlen";
+ p->err = EINVAL;
return (p->err) ? (-1) : (0);
}
@@ -362,7 +362,7 @@ pack_data(struct asr_pack *p, const void *data, size_t len)
return (-1);
if (p->len < p->offset + len) {
- p->err = "no space";
+ p->err = EOVERFLOW;
return (-1);
}