From 57977b6fd31a9a685576b24f52e0bdc420c59485 Mon Sep 17 00:00:00 2001 From: Noriko Hosoi Date: Mon, 30 Jun 2014 18:08:35 -0700 Subject: [PATCH 2/6] Ticket #47835 - Coverity: 12687..12692 12691 - Unbounded source buffer Description: To solve "Passing string *argv of unknown size to strdup, which expects a string of a particular size", get ARG_MAX and pass it to strndup. --- ldap/servers/snmp/main.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ldap/servers/snmp/main.c b/ldap/servers/snmp/main.c index 0373877..fd06dd4 100644 --- a/ldap/servers/snmp/main.c +++ b/ldap/servers/snmp/main.c @@ -75,6 +75,7 @@ main (int argc, char *argv[]) { struct stat logdir_s; pid_t child_pid; FILE *pid_fp; + long arg_max = 0; /* Load options */ while ((--argc > 0) && ((*++argv)[0] == '-')) { @@ -90,11 +91,13 @@ main (int argc, char *argv[]) { } } - if (argc != 1) + if ((argc != 1) || (NULL == *argv)) { exit_usage(); + } /* load config file */ - if ((config_file = strdup(*argv)) == NULL) { + arg_max = sysconf(_SC_ARG_MAX); + if ((config_file = strndup(*argv, arg_max)) == NULL) { printf("ldap-agent: Memory error loading config file\n"); exit(1); } -- 1.8.1.4