From 72ef225cb1ea4992041a9c593eb1e3da80372fe2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net> Date: Mon, 23 Sep 1996 02:05:47 +0200 Subject: [PATCH] strerror bug fixed Rev: src/modules/files/configure.in:1.2 Rev: src/modules/files/efuns.c:1.2 --- src/modules/files/configure.in | 24 ++++++++++++++++++++++++ src/modules/files/efuns.c | 7 ++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/modules/files/configure.in b/src/modules/files/configure.in index 4f30d6e5a9..12fb1ea133 100644 --- a/src/modules/files/configure.in +++ b/src/modules/files/configure.in @@ -13,6 +13,30 @@ AC_CHECK_LIB(nsl, gethostbyname) AC_HAVE_FUNCS(socketpair getwd strerror) +AC_MSG_CHECKING(for working (and failsafe) strerror) +AC_CACHE_VAL(pike_cv_failsafe_strerror) +[ +AC_TRY_RUN([ +#include <stdio.h> +#include <string.h> +int main() +{ + int e; + char *s; + for(e=0;e<256;e++) if(sterror(e)) if(strerror(e)[0]=='\b') exit(1); + exit(0); +} +],pike_cv_failsafe_strerror=yes,pike_cv_failsafe_strerror=no) +]) + +if test "$pike_cv_failsafe_streror" = yes; then + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_STRERROR) +else + AC_MSG_RESULT(no) +fi + + AC_MSG_CHECKING(size of socket buffers) AC_CACHE_VAL(pike_cv_socket_buffer_max, [ diff --git a/src/modules/files/efuns.c b/src/modules/files/efuns.c index 064ee8e835..338d88e80b 100644 --- a/src/modules/files/efuns.c +++ b/src/modules/files/efuns.c @@ -15,7 +15,9 @@ #include "file_machine.h" +#ifdef HAVE_SYS_TYPES_H #include <sys/types.h> +#endif #include <sys/stat.h> #include <sys/param.h> #include <signal.h> @@ -352,7 +354,10 @@ void f_strerror(INT32 args) if(sp[-args].type != T_INT) error("Bad argument 1 to strerror()\n"); - s=strerror(sp[-args].u.integer); + if(sp[-args].u.integer < 0 || sp[-args].u.integer > 256 ) + s=0; + else + s=strerror(sp[-args].u.integer); pop_n_elems(args); if(s) push_text(s); -- GitLab