summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorguenther <>2015-09-06 20:26:20 +0000
committerguenther <>2015-09-06 20:26:20 +0000
commit546626ef931a8053872c26e20dad7feab1cdee2e (patch)
tree46026ef654b47784daf9e08ec5d03de411dfb58f
parent9bd9ea1e2dcdaad0b3a64cf0240acfa7c885f4d2 (diff)
downloadopenbsd-546626ef931a8053872c26e20dad7feab1cdee2e.tar.gz
openbsd-546626ef931a8053872c26e20dad7feab1cdee2e.tar.bz2
openbsd-546626ef931a8053872c26e20dad7feab1cdee2e.zip
Fix aliasing of sys_errlist, sys_nerr, sys_siglist, and sys_signame
to eliminate duplicate copies of the tables and get direct access internally ok kettenis@ deraadt@
-rw-r--r--src/lib/libc/include/namespace.h9
-rw-r--r--src/lib/libc/string/strerror_r.c10
2 files changed, 4 insertions, 15 deletions
diff --git a/src/lib/libc/include/namespace.h b/src/lib/libc/include/namespace.h
index 381ccc35be..939515251e 100644
--- a/src/lib/libc/include/namespace.h
+++ b/src/lib/libc/include/namespace.h
@@ -1,15 +1,8 @@
1/* $OpenBSD: namespace.h,v 1.4 2015/09/05 11:25:30 guenther Exp $ */ 1/* $OpenBSD: namespace.h,v 1.5 2015/09/06 20:26:20 guenther Exp $ */
2 2
3#ifndef _LIBC_NAMESPACE_H_ 3#ifndef _LIBC_NAMESPACE_H_
4#define _LIBC_NAMESPACE_H_ 4#define _LIBC_NAMESPACE_H_
5 5
6/* These will be replaced with symbol renaming ala PROTO_NORMAL */
7#define strtoq _strtoq
8#define strtouq _strtouq
9#define sys_errlist _sys_errlist
10#define sys_nerr _sys_nerr
11#define sys_siglist _sys_siglist
12
13/* 6/*
14 * Copyright (c) 2015 Philip Guenther <guenther@openbsd.org> 7 * Copyright (c) 2015 Philip Guenther <guenther@openbsd.org>
15 * 8 *
diff --git a/src/lib/libc/string/strerror_r.c b/src/lib/libc/string/strerror_r.c
index 2262cb512d..8a15ff1afc 100644
--- a/src/lib/libc/string/strerror_r.c
+++ b/src/lib/libc/string/strerror_r.c
@@ -1,14 +1,10 @@
1/* $OpenBSD: strerror_r.c,v 1.10 2015/09/05 11:25:30 guenther Exp $ */ 1/* $OpenBSD: strerror_r.c,v 1.11 2015/09/06 20:26:20 guenther Exp $ */
2/* Public Domain <marc@snafu.org> */ 2/* Public Domain <marc@snafu.org> */
3 3
4#ifdef NLS 4#ifdef NLS
5#include <nl_types.h> 5#include <nl_types.h>
6#endif 6#endif
7 7
8#define sys_errlist _sys_errlist
9#define sys_nerr _sys_nerr
10#define sys_siglist _sys_siglist
11
12#include <errno.h> 8#include <errno.h>
13#include <limits.h> 9#include <limits.h>
14#include <signal.h> 10#include <signal.h>
@@ -65,7 +61,7 @@ __itoa(int num, int sign, char *buffer, size_t start, size_t end)
65 61
66static int 62static int
67__num2string(int num, int sign, int setid, char *buf, size_t buflen, 63__num2string(int num, int sign, int setid, char *buf, size_t buflen,
68 char * list[], size_t max, const char *def) 64 const char * const list[], size_t max, const char *def)
69{ 65{
70 int ret = 0; 66 int ret = 0;
71 size_t len; 67 size_t len;
@@ -129,7 +125,7 @@ DEF_WEAK(strerror_r);
129char * 125char *
130__strsignal(int num, char *buf) 126__strsignal(int num, char *buf)
131{ 127{
132 __num2string(num, 0, 2, buf, NL_TEXTMAX, (char **)sys_siglist, NSIG, 128 __num2string(num, 0, 2, buf, NL_TEXTMAX, sys_siglist, NSIG,
133 USIGPREFIX); 129 USIGPREFIX);
134 return buf; 130 return buf;
135} 131}