mirror of
https://github.com/nmap/nmap.git
synced 2025-12-23 16:09:02 +00:00
Rectifies incorrect use of va_start/va_end from stdarg.h. Closes #1297
This commit is contained in:
@@ -4138,13 +4138,15 @@ pcap_t *my_pcap_open_live(const char *device, int snaplen, int promisc, int to_m
|
||||
/* Set a pcap filter */
|
||||
void set_pcap_filter(const char *device, pcap_t *pd, const char *bpf, ...) {
|
||||
va_list ap;
|
||||
int size;
|
||||
char buf[3072];
|
||||
struct bpf_program fcode;
|
||||
|
||||
va_start(ap, bpf);
|
||||
if (Vsnprintf(buf, sizeof(buf), bpf, ap) >= (int) sizeof(buf))
|
||||
netutil_fatal("%s called with too-large filter arg\n", __func__);
|
||||
size = Vsnprintf(buf, sizeof(buf), bpf, ap);
|
||||
va_end(ap);
|
||||
if (size >= (int) sizeof(buf))
|
||||
netutil_fatal("%s called with too-large filter arg\n", __func__);
|
||||
|
||||
if (pcap_compile(pd, &fcode, buf, 1, PCAP_NETMASK_UNKNOWN) < 0)
|
||||
netutil_fatal("Error compiling our pcap filter: %s", pcap_geterr(pd));
|
||||
|
||||
@@ -489,6 +489,7 @@ snprintf (char *str, size_t sz, const char *format, ...)
|
||||
|
||||
va_start(args, format);
|
||||
ret = vsnprintf (str, sz, format, args);
|
||||
va_end(args);
|
||||
|
||||
#ifdef PARANOIA
|
||||
{
|
||||
@@ -497,14 +498,15 @@ snprintf (char *str, size_t sz, const char *format, ...)
|
||||
|
||||
tmp = safe_malloc (sz);
|
||||
|
||||
va_start(args, format);
|
||||
ret2 = vsprintf (tmp, format, args);
|
||||
va_end(args);
|
||||
if (ret != ret2 || strcmp(str, tmp))
|
||||
abort ();
|
||||
free (tmp);
|
||||
}
|
||||
#endif
|
||||
|
||||
va_end(args);
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
@@ -565,6 +567,7 @@ asprintf (char **ret, const char *format, ...)
|
||||
|
||||
va_start(args, format);
|
||||
val = vasprintf (ret, format, args);
|
||||
va_end(args);
|
||||
|
||||
#ifdef PARANOIA
|
||||
{
|
||||
@@ -572,14 +575,15 @@ asprintf (char **ret, const char *format, ...)
|
||||
char *tmp;
|
||||
tmp = safe_malloc (val + 1);
|
||||
|
||||
va_start(args, format);
|
||||
ret2 = vsprintf (tmp, format, args);
|
||||
va_end(args);
|
||||
if (val != ret2 || strcmp(*ret, tmp))
|
||||
abort ();
|
||||
free (tmp);
|
||||
}
|
||||
#endif
|
||||
|
||||
va_end(args);
|
||||
return val;
|
||||
}
|
||||
#endif
|
||||
@@ -593,6 +597,7 @@ asnprintf (char **ret, size_t max_sz, const char *format, ...)
|
||||
|
||||
va_start(args, format);
|
||||
val = vasnprintf (ret, max_sz, format, args);
|
||||
va_end(args);
|
||||
|
||||
#ifdef PARANOIA
|
||||
{
|
||||
@@ -600,14 +605,15 @@ asnprintf (char **ret, size_t max_sz, const char *format, ...)
|
||||
char *tmp;
|
||||
tmp = safe_malloc (val + 1);
|
||||
|
||||
va_start(args, format);
|
||||
ret2 = vsprintf (tmp, format, args);
|
||||
va_end(args);
|
||||
if (val != ret2 || strcmp(*ret, tmp))
|
||||
abort ();
|
||||
free (tmp);
|
||||
}
|
||||
#endif
|
||||
|
||||
va_end(args);
|
||||
return val;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -151,7 +151,6 @@ int nping_fatal(int level, const char *str, ...) {
|
||||
char errstr[MAX_ERR_STR_LEN];
|
||||
memset(errstr,0, MAX_ERR_STR_LEN);
|
||||
|
||||
va_start(list, str);
|
||||
fflush(stdout);
|
||||
fflush(stderr);
|
||||
|
||||
@@ -166,11 +165,12 @@ int nping_fatal(int level, const char *str, ...) {
|
||||
|
||||
|
||||
if ( (level>=QT_3 && level<=VB_4) || (level>=DBG_1 && level<=DBG_9) ){
|
||||
va_start(list, str);
|
||||
vfprintf(stderr, str, list);
|
||||
va_end(list);
|
||||
fprintf(stderr,"\n"); /* Print to stderr */
|
||||
}
|
||||
|
||||
va_end(list);
|
||||
exit(EXIT_FAILURE);
|
||||
return OP_SUCCESS;
|
||||
} /* End of nping_fatal() */
|
||||
@@ -189,7 +189,6 @@ int nping_warning(int level, const char *str, ...) {
|
||||
bool skipnewline=false;
|
||||
memset(errstr,0, MAX_ERR_STR_LEN);
|
||||
|
||||
va_start(list, str);
|
||||
fflush(stdout);
|
||||
fflush(stderr);
|
||||
|
||||
@@ -210,11 +209,12 @@ int nping_warning(int level, const char *str, ...) {
|
||||
|
||||
/* Otherwise, print the info to stderr*/
|
||||
if ( (level>=QT_3 && level<=VB_4) || (level>=DBG_1 && level<=DBG_9) ){
|
||||
va_start(list, str);
|
||||
vfprintf(stderr, str, list); /* Print to stderr */
|
||||
va_end(list);
|
||||
if( !skipnewline )
|
||||
fprintf(stderr,"\n");
|
||||
}
|
||||
va_end(list);
|
||||
return OP_SUCCESS;
|
||||
} /* End of nping_warning() */
|
||||
|
||||
@@ -231,7 +231,6 @@ int nping_print(int level, const char *str, ...){
|
||||
bool skipnewline=false;
|
||||
memset(errstr,0, MAX_ERR_STR_LEN);
|
||||
|
||||
va_start(list, str);
|
||||
fflush(stdout);
|
||||
|
||||
int current_vb_level= o.getVerbosity();
|
||||
@@ -251,11 +250,12 @@ int nping_print(int level, const char *str, ...){
|
||||
|
||||
/* Otherwise, print the info to stderr*/
|
||||
if ( (level>=QT_3 && level<=VB_4) || (level>=DBG_1 && level<=DBG_9) ){
|
||||
va_start(list, str);
|
||||
vfprintf(stdout, str, list); /* Print to stderr */
|
||||
va_end(list);
|
||||
if( !skipnewline )
|
||||
fprintf(stdout,"\n");
|
||||
}
|
||||
va_end(list);
|
||||
return OP_SUCCESS;
|
||||
} /* End of nping_print() */
|
||||
|
||||
|
||||
@@ -175,18 +175,20 @@ nsock_event_id nsock_printf(nsock_pool ms_pool, nsock_iod ms_iod,
|
||||
char displaystr[256];
|
||||
|
||||
va_list ap;
|
||||
va_start(ap,format);
|
||||
|
||||
nse = event_new(nsp, NSE_TYPE_WRITE, nsi, timeout_msecs, handler, userdata);
|
||||
assert(nse);
|
||||
|
||||
va_start(ap,format);
|
||||
res = Vsnprintf(buf, sizeof(buf), format, ap);
|
||||
va_end(ap);
|
||||
|
||||
if (res != -1) {
|
||||
if (res > sizeof(buf)) {
|
||||
buf2 = (char * )safe_malloc(res + 16);
|
||||
va_start(ap,format);
|
||||
res2 = Vsnprintf(buf2, sizeof(buf), format, ap);
|
||||
va_end(ap);
|
||||
if (res2 == -1 || res2 > res) {
|
||||
free(buf2);
|
||||
buf2 = NULL;
|
||||
|
||||
Reference in New Issue
Block a user