From 885061687d9caa38470979667d7d8ad6563cedad Mon Sep 17 00:00:00 2001 From: Jan Safranek Date: Tue, 10 Jan 2012 14:11:02 +0100 Subject: [PATCH] Get rid of (insecure) SNMP_MAXPATH in mkdirhier() --- snmplib/system.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/snmplib/system.c b/snmplib/system.c index 8b3bbb836a..3422cc8ca9 100644 --- a/snmplib/system.c +++ b/snmplib/system.c @@ -1022,9 +1022,13 @@ mkdirhier(const char *pathname, mode_t mode, int skiplast) struct stat sbuf; char *ourcopy = strdup(pathname); char *entry; - char buf[SNMP_MAXPATH]; + char *buf; char *st = NULL; + buf = malloc(strlen(pathname)); + if (!buf) + return SNMPERR_GENERR; + #if defined (WIN32) || defined (cygwin) /* convert backslash to forward slash */ for (entry = ourcopy; *entry; entry++) @@ -1069,6 +1073,7 @@ mkdirhier(const char *pathname, mode_t mode, int skiplast) #endif { free(ourcopy); + free(buf); return SNMPERR_GENERR; } } else { @@ -1080,11 +1085,13 @@ mkdirhier(const char *pathname, mode_t mode, int skiplast) * ack! can't make a directory on top of a file */ free(ourcopy); + free(buf); return SNMPERR_GENERR; } } } free(ourcopy); + free(buf); return SNMPERR_SUCCESS; }