1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-17 13:09:02 +00:00

Adding Snprintf() and Vsnprintf() to nbase/nbase_str.c. This is because of Windows' stupid implementation where it doesn't write a NULL byte at the end of the buffer if the result is truncated. I would've just #defined snprintf and vsnprintf to some wrapper function for Windows, but this doesn't work as libdnet and libpcap (and libpcap includes under mswin32) define snprintf to _snprintf and vsnprintf to _vsnprintf like we do, and through the many defines they end up being available in the Nmap sources. Vsnprintf() uses vsnprintf() (and writes a NULL byte at the end if truncated), and Snprintf uses Vsnprintf().

This commit is contained in:
kris
2007-08-14 06:46:54 +00:00
parent 9f41f69d1b
commit 0b50c16b38
23 changed files with 174 additions and 176 deletions

View File

@@ -146,7 +146,7 @@ const char *FingerPrintResults::OmitSubmissionFP() {
static char reason[128];
if (o.scan_delay > 500) { // This can screw up the sequence timing
snprintf(reason, sizeof(reason), "Scan delay (%d) is greater than 500", o.scan_delay);
Snprintf(reason, sizeof(reason), "Scan delay (%d) is greater than 500", o.scan_delay);
return reason;
}
@@ -164,17 +164,17 @@ const char *FingerPrintResults::OmitSubmissionFP() {
used to mean the distance is unknown, though there's a chance it could
have come from the distance calculation. */
if (distance < -1) {
snprintf(reason, sizeof(reason), "Host distance (%d network hops) appears to be negative", distance);
Snprintf(reason, sizeof(reason), "Host distance (%d network hops) appears to be negative", distance);
return reason;
}
if (distance > 5) {
snprintf(reason, sizeof(reason), "Host distance (%d network hops) is greater than five", distance);
Snprintf(reason, sizeof(reason), "Host distance (%d network hops) is greater than five", distance);
return reason;
}
if (maxTimingRatio > 1.4) {
snprintf(reason, sizeof(reason), "maxTimingRatio (%e) is greater than 1.4", maxTimingRatio);
Snprintf(reason, sizeof(reason), "maxTimingRatio (%e) is greater than 1.4", maxTimingRatio);
return reason;
}

View File

@@ -248,7 +248,7 @@ void NmapOps::Initialize() {
#if WIN32
Strncpy(tmpxsl, "nmap.xsl", sizeof(tmpxsl));
#else
snprintf(tmpxsl, sizeof(tmpxsl), "%s/nmap.xsl", NMAPDATADIR);
Snprintf(tmpxsl, sizeof(tmpxsl), "%s/nmap.xsl", NMAPDATADIR);
#endif
if (xsl_stylesheet) free(xsl_stylesheet);
xsl_stylesheet = strdup(tmpxsl);

View File

@@ -199,7 +199,7 @@ void NmapOutputTable::addItemFormatted(unsigned int row,
va_list ap;
va_start(ap,fmt);
char buf[4096];
res = vsnprintf(buf, sizeof(buf), fmt, ap);
res = Vsnprintf(buf, sizeof(buf), fmt, ap);
va_end(ap);
if (res > sizeof(buf))

View File

@@ -317,7 +317,7 @@ const char *Target::NameIP(char *buf, size_t buflen) {
assert(buf);
assert(buflen > 8);
if (hostname) {
snprintf(buf, buflen, "%s (%s)", hostname, targetipstring);
Snprintf(buf, buflen, "%s (%s)", hostname, targetipstring);
} else Strncpy(buf, targetipstring, buflen);
return buf;
}

View File

@@ -398,7 +398,7 @@ static void initialize_idleproxy(struct idle_proxy_info *proxy, char *proxyName,
p = strdup(proxy->host.targetipstr());
q = strdup(inet_ntoa(proxy->host.v4source()));
snprintf(filter, sizeof(filter), "tcp and src host %s and dst host %s and src port %hu", p, q, proxy->probe_port);
Snprintf(filter, sizeof(filter), "tcp and src host %s and dst host %s and src port %hu", p, q, proxy->probe_port);
free(p);
free(q);
set_pcap_filter(proxy->host.deviceName(), proxy->pd, filter);
@@ -978,7 +978,7 @@ void idle_scan(Target *target, u16 *portarray, int numports,
int portsleft;
time_t starttime;
char scanname[32];
snprintf(scanname, sizeof(scanname), "Idlescan against %s", target->NameIP());
Snprintf(scanname, sizeof(scanname), "Idlescan against %s", target->NameIP());
ScanProgressMeter SPM(scanname);
if (numports == 0) return; /* nothing to scan for */
@@ -1032,7 +1032,7 @@ void idle_scan(Target *target, u16 *portarray, int numports,
char additional_info[14];
snprintf(additional_info, sizeof(additional_info), "%d ports", numports);
Snprintf(additional_info, sizeof(additional_info), "%d ports", numports);
SPM.endTask(NULL, additional_info);
/* Now we go through the ports which were not determined were scanned

View File

@@ -193,7 +193,7 @@ int main(int argc, char *argv[]) {
#endif
if ((cptr = getenv("NMAP_ARGS"))) {
if (snprintf(command, sizeof(command), "nmap %s", cptr) >= (int) sizeof(command)) {
if (Snprintf(command, sizeof(command), "nmap %s", cptr) >= (int) sizeof(command)) {
error("Warning: NMAP_ARGS variable is too long, truncated");
}
/* copy rest of command-line arguments */
@@ -322,7 +322,7 @@ int main(int argc, char *argv[]) {
if (endptr) {
*endptr = '\0';
}
snprintf(nmappath, sizeof(nmappath), "%s/%s", pptr, nmapcalledas);
Snprintf(nmappath, sizeof(nmappath), "%s/%s", pptr, nmapcalledas);
if (stat(nmappath, &st) != -1)
break;
nmappath[0] = '\0';

32
nmap.cc
View File

@@ -824,11 +824,11 @@ int nmap_main(int argc, char *argv[]) {
xmlfilename = optarg;
} else if (strcmp(long_options[option_index].name, "oA") == 0) {
char buf[MAXPATHLEN];
snprintf(buf, sizeof(buf), "%s.nmap", optarg);
Snprintf(buf, sizeof(buf), "%s.nmap", optarg);
normalfilename = strdup(buf);
snprintf(buf, sizeof(buf), "%s.gnmap", optarg);
Snprintf(buf, sizeof(buf), "%s.gnmap", optarg);
machinefilename = strdup(buf);
snprintf(buf, sizeof(buf), "%s.xml", optarg);
Snprintf(buf, sizeof(buf), "%s.xml", optarg);
xmlfilename = strdup(buf);
} else if (strcmp(long_options[option_index].name, "thc") == 0) {
printf("!!Greets to Van Hauser, Plasmoid, Skyper and the rest of THC!!\n");
@@ -1390,7 +1390,7 @@ int nmap_main(int argc, char *argv[]) {
char xslline[1024];
if (xslfname) {
char *p = xml_convert(xslfname);
snprintf(xslline, sizeof(xslline), "<?xml-stylesheet href=\"%s\" type=\"text/xsl\"?>\n", p);
Snprintf(xslline, sizeof(xslline), "<?xml-stylesheet href=\"%s\" type=\"text/xsl\"?>\n", p);
free(p);
} else xslline[0] = '\0';
log_write(LOG_XML, "<?xml version=\"1.0\" ?>\n%s<!-- ", xslline);
@@ -2283,7 +2283,7 @@ f --spoof \"/usr/local/bin/pico -z hello.c\" -sS -oN e.log example.com/24\n\n");
char *seqreport1(struct seq_info *seq) {
static char report[512];
snprintf(report, sizeof(report), "TCP Sequence Prediction: Difficulty=%d (%s)\n", seq->index, seqidx2difficultystr1(seq->index));
Snprintf(report, sizeof(report), "TCP Sequence Prediction: Difficulty=%d (%s)\n", seq->index, seqidx2difficultystr1(seq->index));
return report;
}
@@ -2296,7 +2296,7 @@ const char *seqidx2difficultystr1(unsigned long idx) {
char *seqreport(struct seq_info *seq) {
static char report[512];
snprintf(report, sizeof(report), "TCP Sequence Prediction: Difficulty=%d (%s)\n", seq->index, seqidx2difficultystr(seq->index));
Snprintf(report, sizeof(report), "TCP Sequence Prediction: Difficulty=%d (%s)\n", seq->index, seqidx2difficultystr(seq->index));
return report;
}
@@ -2452,7 +2452,7 @@ int ftp_anon_connect(struct ftpinfo *ftp) {
pfatal("recv problem from ftp bounce server");
}
snprintf(command, 511, "USER %s\r\n", ftp->user);
Snprintf(command, 511, "USER %s\r\n", ftp->user);
send(sd, command, strlen(command), 0);
res = recvtime(sd, recvbuf, sizeof(recvbuf) - 1,12, NULL);
@@ -2465,7 +2465,7 @@ int ftp_anon_connect(struct ftpinfo *ftp) {
fatal("Your ftp bounce server doesn't like the username \"%s\"", ftp->user);
}
snprintf(command, 511, "PASS %s\r\n", ftp->pass);
Snprintf(command, 511, "PASS %s\r\n", ftp->pass);
send(sd, command, strlen(command), 0);
res = recvtime(sd, recvbuf, sizeof(recvbuf) - 1,12, NULL);
@@ -2625,14 +2625,14 @@ int nmap_fetchfile(char *filename_returned, int bufferlen, char *file) {
}
if (o.datadir) {
res = snprintf(filename_returned, bufferlen, "%s/%s", o.datadir, file);
res = Snprintf(filename_returned, bufferlen, "%s/%s", o.datadir, file);
if (res > 0 && res < bufferlen) {
foundsomething = fileexistsandisreadable(filename_returned);
}
}
if (!foundsomething && (dirptr = getenv("NMAPDIR"))) {
res = snprintf(filename_returned, bufferlen, "%s/%s", dirptr, file);
res = Snprintf(filename_returned, bufferlen, "%s/%s", dirptr, file);
if (res > 0 && res < bufferlen) {
foundsomething = fileexistsandisreadable(filename_returned);
}
@@ -2641,7 +2641,7 @@ int nmap_fetchfile(char *filename_returned, int bufferlen, char *file) {
if (!foundsomething) {
pw = getpwuid(getuid());
if (pw) {
res = snprintf(filename_returned, bufferlen, "%s/.nmap/%s", pw->pw_dir, file);
res = Snprintf(filename_returned, bufferlen, "%s/.nmap/%s", pw->pw_dir, file);
if (res > 0 && res < bufferlen) {
foundsomething = fileexistsandisreadable(filename_returned);
}
@@ -2649,7 +2649,7 @@ int nmap_fetchfile(char *filename_returned, int bufferlen, char *file) {
if (!foundsomething && getuid() != geteuid()) {
pw = getpwuid(geteuid());
if (pw) {
res = snprintf(filename_returned, bufferlen, "%s/.nmap/%s", pw->pw_dir, file);
res = Snprintf(filename_returned, bufferlen, "%s/.nmap/%s", pw->pw_dir, file);
if (res > 0 && res < bufferlen) {
foundsomething = fileexistsandisreadable(filename_returned);
}
@@ -2666,20 +2666,20 @@ int nmap_fetchfile(char *filename_returned, int bufferlen, char *file) {
for(i = res - 1; i >= 0 && fnbuf[i] != '/' && fnbuf[i] != '\\'; i--);
if(i >= 0) /* we found it */
fnbuf[i] = 0;
res = snprintf(filename_returned, bufferlen, "%s\\%s", fnbuf, file);
res = Snprintf(filename_returned, bufferlen, "%s\\%s", fnbuf, file);
if(res > 0 && res < bufferlen) {
foundsomething = fileexistsandisreadable(filename_returned);
}
}
#endif
if (!foundsomething) {
res = snprintf(filename_returned, bufferlen, "%s/%s", NMAPDATADIR, file);
res = Snprintf(filename_returned, bufferlen, "%s/%s", NMAPDATADIR, file);
if (res > 0 && res < bufferlen) {
foundsomething = fileexistsandisreadable(filename_returned);
}
}
if (foundsomething && (*filename_returned != '.')) {
res = snprintf(dot_buffer, sizeof(dot_buffer), "./%s", file);
res = Snprintf(dot_buffer, sizeof(dot_buffer), "./%s", file);
if (res > 0 && res < bufferlen) {
if (fileexistsandisreadable(dot_buffer)) {
#ifdef WIN32
@@ -2693,7 +2693,7 @@ int nmap_fetchfile(char *filename_returned, int bufferlen, char *file) {
}
if (!foundsomething) {
res = snprintf(filename_returned, bufferlen, "./%s", file);
res = Snprintf(filename_returned, bufferlen, "./%s", file);
if (res > 0 && res < bufferlen) {
foundsomething = fileexistsandisreadable(filename_returned);
}

View File

@@ -874,7 +874,7 @@ void win32_read_registry(char *controlset) {
char buf[2048], keyname[2048], *p;
DWORD sz, i;
snprintf(keybasebuf, sizeof(keybasebuf), "SYSTEM\\%s\\Services\\Tcpip\\Parameters", controlset);
Snprintf(keybasebuf, sizeof(keybasebuf), "SYSTEM\\%s\\Services\\Tcpip\\Parameters", controlset);
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, keybasebuf,
0, KEY_READ, &hKey) != ERROR_SUCCESS) {
if (firstrun) error("mass_dns: warning: Error opening registry to read DNS servers. Try using --system-dns or specify valid servers with --dns-servers");
@@ -891,14 +891,14 @@ void win32_read_registry(char *controlset) {
RegCloseKey(hKey);
snprintf(keybasebuf, sizeof(keybasebuf), "SYSTEM\\%s\\Services\\Tcpip\\Parameters\\Interfaces", controlset);
Snprintf(keybasebuf, sizeof(keybasebuf), "SYSTEM\\%s\\Services\\Tcpip\\Parameters\\Interfaces", controlset);
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, keybasebuf,
0, KEY_ENUMERATE_SUB_KEYS, &hKey) == ERROR_SUCCESS) {
sz = sizeof(buf);
for (i=0; RegEnumKeyEx(hKey, i, buf, &sz, NULL, NULL, NULL, NULL) != ERROR_NO_MORE_ITEMS; i++) {
snprintf(keyname, sizeof(keyname), "SYSTEM\\%s\\Services\\Tcpip\\Parameters\\Interfaces\\%s", controlset, buf);
Snprintf(keyname, sizeof(keyname), "SYSTEM\\%s\\Services\\Tcpip\\Parameters\\Interfaces\\%s", controlset, buf);
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, keyname,
0, KEY_READ, &hKey2) == ERROR_SUCCESS) {
@@ -1093,11 +1093,11 @@ static void etchosts_init(void) {
has_backslash = (windows_dir[strlen(windows_dir)-1] == '\\');
// Windows 95/98/Me:
snprintf(tpbuf, sizeof(tpbuf), "%s%shosts", windows_dir, has_backslash ? "" : "\\");
Snprintf(tpbuf, sizeof(tpbuf), "%s%shosts", windows_dir, has_backslash ? "" : "\\");
parse_etchosts(tpbuf);
// Windows NT/2000/XP/2K3:
snprintf(tpbuf, sizeof(tpbuf), "%s%ssystem32\\drivers\\etc\\hosts", windows_dir, has_backslash ? "" : "\\");
Snprintf(tpbuf, sizeof(tpbuf), "%s%ssystem32\\drivers\\etc\\hosts", windows_dir, has_backslash ? "" : "\\");
parse_etchosts(tpbuf);
#else
@@ -1133,7 +1133,7 @@ static void nmap_mass_rdns_core(Target **targets, int num_targets) {
if (((currenths->flags & HOST_UP) || o.resolve_all) && !o.noresolve) stat_actual++;
}
snprintf(spmobuf, sizeof(spmobuf), "System DNS resolution of %d host%s.", num_targets, num_targets-1 ? "s" : "");
Snprintf(spmobuf, sizeof(spmobuf), "System DNS resolution of %d host%s.", num_targets, num_targets-1 ? "s" : "");
SPM = new ScanProgressMeter(spmobuf);
for(i=0, hostI = targets; hostI < targets+num_targets; hostI++, i++) {
@@ -1214,7 +1214,7 @@ static void nmap_mass_rdns_core(Target **targets, int num_targets) {
read_timeout_index = MIN(sizeof(read_timeouts)/sizeof(read_timeouts[0]), servs.size()) - 1;
snprintf(spmobuf, sizeof(spmobuf), "Parallel DNS resolution of %d host%s.", num_targets, num_targets-1 ? "s" : "");
Snprintf(spmobuf, sizeof(spmobuf), "Parallel DNS resolution of %d host%s.", num_targets, num_targets-1 ? "s" : "");
SPM = new ScanProgressMeter(spmobuf);
while (total_reqs > 0) {
@@ -1245,7 +1245,7 @@ static void nmap_mass_rdns_core(Target **targets, int num_targets) {
log_write(LOG_STDOUT, "Performing system-dns for %d domain names that use CNAMEs\n", (int) cname_reqs.size());
if (cname_reqs.size()) {
snprintf(spmobuf, sizeof(spmobuf), "System CNAME DNS resolution of %u host%s.", (unsigned) cname_reqs.size(), cname_reqs.size()-1 ? "s" : "");
Snprintf(spmobuf, sizeof(spmobuf), "System CNAME DNS resolution of %u host%s.", (unsigned) cname_reqs.size(), cname_reqs.size()-1 ? "s" : "");
SPM = new ScanProgressMeter(spmobuf);
for(i=0, reqI = cname_reqs.begin(); reqI != cname_reqs.end(); reqI++, i++) {

View File

@@ -47,7 +47,7 @@ int auxiliar_tostring(lua_State *L) {
lua_pushstring(L, "class");
lua_gettable(L, -2);
if (!lua_isstring(L, -1)) goto error;
snprintf(buf, 31, "%p", lua_touserdata(L, 1));
Snprintf(buf, 31, "%p", lua_touserdata(L, 1));
lua_pushfstring(L, "%s: %s", lua_tostring(L, -1), buf);
return 1;
error:
@@ -75,7 +75,7 @@ void *auxiliar_checkclass(lua_State *L, const char *classname, int objidx) {
void *data = auxiliar_getclassudata(L, classname, objidx);
if (!data) {
char msg[45];
snprintf(msg, 44, "%.35s expected", classname);
Snprintf(msg, 44, "%.35s expected", classname);
luaL_argerror(L, objidx, msg);
}
return data;
@@ -89,7 +89,7 @@ void *auxiliar_checkgroup(lua_State *L, const char *groupname, int objidx) {
void *data = auxiliar_getgroupudata(L, groupname, objidx);
if (!data) {
char msg[45];
snprintf(msg, 44, "%.35s expected", groupname);
Snprintf(msg, 44, "%.35s expected", groupname);
luaL_argerror(L, objidx, msg);
}
return data;

View File

@@ -799,7 +799,7 @@ static int l_nsock_ncap_open(lua_State* l){
/* create key */
char key[8192];
snprintf(key, sizeof(key), "%s|%i|%i|%u|%s",
Snprintf(key, sizeof(key), "%s|%i|%i|%u|%s",
pcapdev,
snaplen, promisc,
(unsigned int)strlen(bpf),

View File

@@ -20,6 +20,7 @@ extern "C" {
#include <locale.h>
#include <pcre.h>
#include "nbase.h"
#include "pcre.h"
static void L_lua_error(lua_State *L, const char *message)
@@ -50,11 +51,11 @@ static int udata_tostring (lua_State *L, const char* type_handle,
void *udata = luaL_checkudata(L, 1, type_handle);
if(udata) {
(void)snprintf(buf, 255, "%s (%p)", type_name, udata);
(void)Snprintf(buf, 255, "%s (%p)", type_name, udata);
lua_pushstring(L, buf);
}
else {
(void)snprintf(buf, 255, "must be userdata of type '%s'", type_name);
(void)Snprintf(buf, 255, "must be userdata of type '%s'", type_name);
(void)luaL_argerror(L, 1, buf);
}
@@ -140,7 +141,7 @@ static int Lpcre_comp(lua_State *L)
ud->pr = pcre_compile(pattern, cflags, &error, &erroffset, tables);
if(!ud->pr) {
(void)snprintf(buf, 255, "%s (pattern offset: %d)", error, erroffset+1);
(void)Snprintf(buf, 255, "%s (pattern offset: %d)", error, erroffset+1);
/* show offset 1-based as it's common in Lua */
L_lua_error(L, buf);
}

View File

@@ -1,9 +1,6 @@
#ifndef PCRE_H
#define PCRE_H
#ifdef WIN32
#define snprintf _snprintf
#endif /* WIN32 */
#define NSE_PCRELIBNAME "pcre"
LUALIB_API int luaopen_pcre(lua_State *L);

View File

@@ -563,7 +563,7 @@ static FingerPrint *get_fingerprint(Target *target, struct seq_info *si) {
if (o.debugging > 1)
log_write(LOG_STDOUT, "Wait time is %dms\n", (ossofttimeout +500)/1000);
snprintf(filter, sizeof(filter), "dst host %s and (icmp or (tcp and src host %s))", inet_ntoa(target->v4source()), target->targetipstr());
Snprintf(filter, sizeof(filter), "dst host %s and (icmp or (tcp and src host %s))", inet_ntoa(target->v4source()), target->targetipstr());
set_pcap_filter(target->deviceName(), pd, filter);
target->osscanSetFlag(OS_PERF); /* Let Nmap know that we did try an OS scan */
@@ -1600,24 +1600,24 @@ static void WriteSInfo(char *ostr, int ostrlen, bool isGoodFP,
otbuf[0] = '\0';
if(openTcpPort != -1)
snprintf(otbuf, sizeof(otbuf), "%d", openTcpPort);
Snprintf(otbuf, sizeof(otbuf), "%d", openTcpPort);
ctbuf[0] = '\0';
if(closedTcpPort != -1)
snprintf(ctbuf, sizeof(ctbuf), "%d", closedTcpPort);
Snprintf(ctbuf, sizeof(ctbuf), "%d", closedTcpPort);
cubuf[0] = '\0';
if(closedUdpPort != -1)
snprintf(cubuf, sizeof(cubuf), "%d", closedUdpPort);
Snprintf(cubuf, sizeof(cubuf), "%d", closedUdpPort);
dsbuf[0] = '\0';
if(distance != -1) {
snprintf(dsbuf, sizeof(dsbuf), "%%DS=%d", distance);
Snprintf(dsbuf, sizeof(dsbuf), "%%DS=%d", distance);
}
macbuf[0] = '\0';
if (mac)
snprintf(macbuf, sizeof(macbuf), "%%M=%02X%02X%02X", mac[0], mac[1], mac[2]);
Snprintf(macbuf, sizeof(macbuf), "%%M=%02X%02X%02X", mac[0], mac[1], mac[2]);
snprintf(ostr, ostrlen, "SCAN(V=%s%%D=%d/%d%%OT=%s%%CT=%s%%CU=%s%%PV=%c%s%%G=%c%s%%TM=%X%%P=%s)",
Snprintf(ostr, ostrlen, "SCAN(V=%s%%D=%d/%d%%OT=%s%%CT=%s%%CU=%s%%PV=%c%s%%G=%c%s%%TM=%X%%P=%s)",
NMAP_VERSION, ltime->tm_mon + 1, ltime->tm_mday,
otbuf, ctbuf, cubuf, isipprivate(addr)?'Y':'N', dsbuf, isGoodFP?'Y':'N',
macbuf, (int) timep, NMAP_PLATFORM);
@@ -1909,7 +1909,7 @@ memset(str, 0, sizeof(str));
if (!FP) return "(None)";
if(FP->OS_name && *(FP->OS_name)) {
len = snprintf(str, 128, "FingerPrint %s\n", FP->OS_name);
len = Snprintf(str, 128, "FingerPrint %s\n", FP->OS_name);
if (len < 0) fatal("OS name too long");
p += len;
}

View File

@@ -3264,7 +3264,7 @@ static void begin_sniffer(HostOsScan *HOS, vector<Target *> &Targets) {
if (doIndividual) {
for(targetno = 0; targetno < Targets.size(); targetno++) {
len = snprintf(dst_hosts + filterlen,
len = Snprintf(dst_hosts + filterlen,
sizeof(dst_hosts) - filterlen,
"%ssrc host %s", (targetno == 0)? "" : " or ",
Targets[targetno]->targetipstr());
@@ -3272,7 +3272,7 @@ static void begin_sniffer(HostOsScan *HOS, vector<Target *> &Targets) {
fatal("ran out of space in dst_hosts");
filterlen += len;
}
len = snprintf(dst_hosts + filterlen, sizeof(dst_hosts) - filterlen, ")))");
len = Snprintf(dst_hosts + filterlen, sizeof(dst_hosts) - filterlen, ")))");
if (len < 0 || len + filterlen >= (int) sizeof(dst_hosts))
fatal("ran out of space in dst_hosts");
}
@@ -3281,10 +3281,10 @@ static void begin_sniffer(HostOsScan *HOS, vector<Target *> &Targets) {
HOS->pd = my_pcap_open_live(Targets[0]->deviceName(), 8192, (o.spoofsource)? 1 : 0, pcap_selectable_fd_valid()? 200 : 2);
if (doIndividual)
len = snprintf(pcap_filter, sizeof(pcap_filter), "dst host %s and (icmp or (tcp and (%s",
len = Snprintf(pcap_filter, sizeof(pcap_filter), "dst host %s and (icmp or (tcp and (%s",
inet_ntoa(Targets[0]->v4source()), dst_hosts);
else
len = snprintf(pcap_filter, sizeof(pcap_filter), "dst host %s and (icmp or tcp)",
len = Snprintf(pcap_filter, sizeof(pcap_filter), "dst host %s and (icmp or tcp)",
inet_ntoa(Targets[0]->v4source()));
if (len < 0 || len >= (int) sizeof(pcap_filter))
fatal("ran out of space in pcap filter");
@@ -3848,7 +3848,7 @@ static int os_scan_2(vector<Target *> &Targets) {
bool plural = (OSI->numIncompleteHosts() != 1);
if (!plural) {
(*(OSI->incompleteHosts.begin()))->target->NameIP(targetstr, sizeof(targetstr));
} else snprintf(targetstr, sizeof(targetstr), "%d hosts", (int) OSI->numIncompleteHosts());
} else Snprintf(targetstr, sizeof(targetstr), "%d hosts", (int) OSI->numIncompleteHosts());
log_write(LOG_PLAIN, "%s OS detection (try #%d) against %s\n", (itry == 0)? "Initiating" : "Retrying", itry + 1, targetstr);
log_flush_all();
}

View File

@@ -269,12 +269,12 @@ static int getServiceXMLBuf(struct serviceDeductions *sd, char *xmlbuf,
}
if (o.rpcscan && sd->rpc_status == RPC_STATUS_GOOD_PROG) {
snprintf(rpcbuf, sizeof(rpcbuf),
Snprintf(rpcbuf, sizeof(rpcbuf),
" rpcnum=\"%li\" lowver=\"%i\" highver=\"%i\" proto=\"rpc\"",
sd->rpc_program, sd->rpc_lowver, sd->rpc_highver);
} else rpcbuf[0] = '\0';
snprintf(xmlbuf, xmlbuflen,
Snprintf(xmlbuf, xmlbuflen,
"<service name=\"%s\"%s %smethod=\"%s\" conf=\"%d\"%s />",
sd->name? sd->name : "unknown",
versionxmlstring.c_str(),
@@ -400,10 +400,10 @@ static void getNmapServiceName(struct serviceDeductions *sd, int state,
if (sd->name && (sd->service_tunnel != SERVICE_TUNNEL_SSL ||
sd->dtype == SERVICE_DETECTION_PROBED)) {
if (o.servicescan && state == PORT_OPEN && sd->name_confidence <= 5)
len = snprintf(dst, lenremaining, "%s?", sd->name);
else len = snprintf(dst, lenremaining, "%s", sd->name);
len = Snprintf(dst, lenremaining, "%s?", sd->name);
else len = Snprintf(dst, lenremaining, "%s", sd->name);
} else {
len = snprintf(dst, lenremaining, "%s", "unknown");
len = Snprintf(dst, lenremaining, "%s", "unknown");
}
if (len > lenremaining || len < 0) goto overflow;
dst += len;
@@ -508,9 +508,9 @@ void printportoutput(Target *currenths, PortList *plist) {
else log_write(LOG_PLAIN, ", ");
char desc[32];
if (o.ipprotscan)
snprintf(desc, sizeof(desc), (plist->getStateCounts(istate) == 1)? "protocol" : "protocols");
Snprintf(desc, sizeof(desc), (plist->getStateCounts(istate) == 1)? "protocol" : "protocols");
else
snprintf(desc, sizeof(desc), (plist->getStateCounts(istate) == 1)? "port" : "ports");
Snprintf(desc, sizeof(desc), (plist->getStateCounts(istate) == 1)? "port" : "ports");
log_write(LOG_PLAIN, "%d %s %s", plist->getStateCounts(istate), statenum2str(istate), desc);
prevstate = istate;
}
@@ -572,7 +572,7 @@ void printportoutput(Target *currenths, PortList *plist) {
Tbl->addItem(rowno, reasoncol, true, port_reason_str(current->reason));
state = statenum2str(current->state);
proto = nmap_getprotbynum(htons(current->portno));
snprintf(portinfo, sizeof(portinfo), "%s",
Snprintf(portinfo, sizeof(portinfo), "%s",
proto?proto->p_name: "unknown");
Tbl->addItemFormatted(rowno, portcol, false, "%d", current->portno);
Tbl->addItem(rowno, statecol, true, state);
@@ -599,7 +599,7 @@ void printportoutput(Target *currenths, PortList *plist) {
if (!first) log_write(LOG_MACHINE,", ");
else first = 0;
strcpy(protocol,(current->proto == IPPROTO_TCP)? "tcp": "udp");
snprintf(portinfo, sizeof(portinfo), "%d/%s", current->portno, protocol);
Snprintf(portinfo, sizeof(portinfo), "%d/%s", current->portno, protocol);
state = statenum2str(current->state);
current->getServiceDeductions(&sd);
if (sd.service_fp && saved_servicefps.size() <= 8)
@@ -621,21 +621,21 @@ void printportoutput(Target *currenths, PortList *plist) {
break;
case RPC_STATUS_GOOD_PROG:
name = nmap_getrpcnamebynum(sd.rpc_program);
snprintf(rpcmachineinfo, sizeof(rpcmachineinfo), "(%s:%li*%i-%i)", (name)? name : "", sd.rpc_program, sd.rpc_lowver, sd.rpc_highver);
Snprintf(rpcmachineinfo, sizeof(rpcmachineinfo), "(%s:%li*%i-%i)", (name)? name : "", sd.rpc_program, sd.rpc_lowver, sd.rpc_highver);
if (!name) {
snprintf(rpcinfo, sizeof(rpcinfo), "(#%li (unknown) V%i-%i)", sd.rpc_program, sd.rpc_lowver, sd.rpc_highver);
Snprintf(rpcinfo, sizeof(rpcinfo), "(#%li (unknown) V%i-%i)", sd.rpc_program, sd.rpc_lowver, sd.rpc_highver);
} else {
if (sd.rpc_lowver == sd.rpc_highver) {
snprintf(rpcinfo, sizeof(rpcinfo), "(%s V%i)", name, sd.rpc_lowver);
Snprintf(rpcinfo, sizeof(rpcinfo), "(%s V%i)", name, sd.rpc_lowver);
} else
snprintf(rpcinfo, sizeof(rpcinfo), "(%s V%i-%i)", name, sd.rpc_lowver, sd.rpc_highver);
Snprintf(rpcinfo, sizeof(rpcinfo), "(%s V%i-%i)", name, sd.rpc_lowver, sd.rpc_highver);
}
break;
default:
fatal("Unknown rpc_status %d", sd.rpc_status);
break;
}
snprintf(serviceinfo, sizeof(serviceinfo), "%s%s%s", (sd.name)? sd.name : ((*rpcinfo)? "" : "unknown"), (sd.name)? " " : "", rpcinfo);
Snprintf(serviceinfo, sizeof(serviceinfo), "%s%s%s", (sd.name)? sd.name : ((*rpcinfo)? "" : "unknown"), (sd.name)? " " : "", rpcinfo);
} else {
getNmapServiceName(&sd, current->state, serviceinfo, sizeof(serviceinfo));
rpcmachineinfo[0] = '\0';
@@ -879,7 +879,7 @@ void log_vwrite(int logt, const char *fmt, va_list ap) {
while ((l&1)==0) { fileidx++; l>>=1; }
assert(fileidx < LOG_NUM_FILES);
if (o.logfd[fileidx]) {
len = vsnprintf(writebuf, writebuflen, fmt, ap);
len = Vsnprintf(writebuf, writebuflen, fmt, ap);
if (len == 0) {
va_end(apcopy);
return;
@@ -894,9 +894,9 @@ void log_vwrite(int logt, const char *fmt, va_list ap) {
writebuflen *= 100;
}
writebuf = (char *) safe_realloc(writebuf, writebuflen);
len = vsnprintf(writebuf, writebuflen, fmt, apcopy);
len = Vsnprintf(writebuf, writebuflen, fmt, apcopy);
if (len <= 0 || len >= writebuflen) {
fatal("%s: vnsprintf failed. Even after increasing bufferlen to %d, vsnprintf returned %d (logt == %d). Please email this message to fyodor@insecure.org. Quitting.", __func__, writebuflen, len, logt);
fatal("%s: vnsprintf failed. Even after increasing bufferlen to %d, Vsnprintf returned %d (logt == %d). Please email this message to fyodor@insecure.org. Quitting.", __func__, writebuflen, len, logt);
}
}
if (logt == LOG_SKID && !skid_noxlate)
@@ -1107,11 +1107,11 @@ static void print_MAC_XML_Info(Target *currenths) {
if (mac) {
const char *macvendor = MACPrefix2Corp(mac);
snprintf(macascii, sizeof(macascii), "%02X:%02X:%02X:%02X:%02X:%02X",
Snprintf(macascii, sizeof(macascii), "%02X:%02X:%02X:%02X:%02X:%02X",
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
if (macvendor) {
xml_mac = xml_convert(macvendor);
snprintf(vendorstr, sizeof(vendorstr), " vendor=\"%s\"", xml_mac);
Snprintf(vendorstr, sizeof(vendorstr), " vendor=\"%s\"", xml_mac);
free(xml_mac);
} else vendorstr[0] = '\0';
log_write(LOG_XML, "<address addr=\"%s\" addrtype=\"mac\"%s />\n", macascii, vendorstr);
@@ -1173,9 +1173,9 @@ void write_host_status(Target *currenths, int resolve_all) {
else if (o.pingscan) {
if(o.reason && currenths->flags & HOST_UP)
snprintf(reasonbuf, 512, "%s.\n", target_reason_str(currenths));
Snprintf(reasonbuf, 512, "%s.\n", target_reason_str(currenths));
else
snprintf(reasonbuf, 512, ".\n");
Snprintf(reasonbuf, 512, ".\n");
write_xml_initial_hostinfo(currenths,
(currenths->flags & HOST_UP)? "up" : "down");
@@ -1258,7 +1258,7 @@ static void printosclassificationoutput(const struct OS_Classification_Results *
for (classno=0; classno < OSR->OSC_num_matches; classno++) {
// Because the OS_Generation filed is optional
if (OSR->OSC[classno]->OS_Generation) {
snprintf(tmpbuf, sizeof(tmpbuf), " osgen=\"%s\"", OSR->OSC[classno]->OS_Generation);
Snprintf(tmpbuf, sizeof(tmpbuf), " osgen=\"%s\"", OSR->OSC[classno]->OS_Generation);
} else tmpbuf[0] = '\0';
{
char *xml_type, *xml_vendor, *xml_class;
@@ -1285,7 +1285,7 @@ static void printosclassificationoutput(const struct OS_Classification_Results *
// If family and vendor names are the same, no point being redundant
if (strcmp(OSR->OSC[classno]->OS_Vendor, OSR->OSC[classno]->OS_Family) == 0)
Strncpy(tmpbuf, OSR->OSC[classno]->OS_Family, sizeof(tmpbuf));
else snprintf(tmpbuf, sizeof(tmpbuf), "%s %s", OSR->OSC[classno]->OS_Vendor, OSR->OSC[classno]->OS_Family);
else Snprintf(tmpbuf, sizeof(tmpbuf), "%s %s", OSR->OSC[classno]->OS_Vendor, OSR->OSC[classno]->OS_Family);
// Let's see if it is already in the array
@@ -1353,7 +1353,7 @@ void printmacinfo(Target *currenths) {
if (mac) {
const char *macvendor = MACPrefix2Corp(mac);
snprintf(macascii, sizeof(macascii), "%02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
Snprintf(macascii, sizeof(macascii), "%02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
log_write(LOG_PLAIN, "MAC Address: %s (%s)\n", macascii, macvendor? macvendor : "Unknown");
}
}

View File

@@ -336,11 +336,11 @@ void Port::setRPCProbeResults(int rpcs, unsigned long rpcp,
serviceprobe_service = strdup(newsvc);
serviceprobe_product = strdup(newsvc);
if (rpc_lowver == rpc_highver)
snprintf(verbuf, sizeof(verbuf), "%i", rpc_lowver);
Snprintf(verbuf, sizeof(verbuf), "%i", rpc_lowver);
else
snprintf(verbuf, sizeof(verbuf), "%i-%i", rpc_lowver, rpc_highver);
Snprintf(verbuf, sizeof(verbuf), "%i-%i", rpc_lowver, rpc_highver);
serviceprobe_version = strdup(verbuf);
snprintf(verbuf, sizeof(verbuf), "rpc #%li", rpc_program);
Snprintf(verbuf, sizeof(verbuf), "rpc #%li", rpc_program);
serviceprobe_extrainfo = strdup(verbuf);
} else if (rpc_status == RPC_STATUS_UNKNOWN) {
if (serviceprobe_service)
@@ -403,7 +403,7 @@ int PortList::addPort(u16 portno, u8 protocol, char *owner, int state) {
if ((state == PORT_OPEN && o.verbose) || (o.debugging > 1)) {
if (owner && *owner) {
snprintf(msg, sizeof(msg), " (owner: %s)", owner);
Snprintf(msg, sizeof(msg), " (owner: %s)", owner);
} else msg[0] = '\0';
log_write(LOG_STDOUT, "Discovered %s port %hu/%s%s%s\n",
@@ -489,7 +489,7 @@ void PortList::setIdStr(const char *id) {
len = strlen(id);
len += 5; // " on " + \0
idstr = (char *) safe_malloc(len);
snprintf(idstr, len, " on %s", id);
Snprintf(idstr, len, " on %s", id);
}

View File

@@ -367,7 +367,7 @@ char *target_reason_str(Target *t) {
static char reason[128];
memset(reason,'\0', 128);
assert(t->reason.reason_id != ER_NORESPONSE);
snprintf(reason, 128, ", received %s",reason_str(t->reason.reason_id, SINGULAR));
Snprintf(reason, 128, ", received %s",reason_str(t->reason.reason_id, SINGULAR));
return reason;
}
@@ -377,7 +377,7 @@ char *target_reason_str(Target *t) {
char *port_reason_str(state_reason_t r) {
static char reason[128];
memset(reason,'\0', 128);
snprintf(reason, 128, "%s%s%s", reason_str(r.reason_id, SINGULAR),
Snprintf(reason, 128, "%s%s%s", reason_str(r.reason_id, SINGULAR),
(r.ip_addr.s_addr==0)?"":" from ",
(r.ip_addr.s_addr==0)?"":inet_ntoa(r.ip_addr));
return reason;

View File

@@ -611,17 +611,17 @@ static char *probespec2ascii(probespec *pspec, char *buf, unsigned int bufsz) {
if (pspec->pd.tcp.flags & TH_CWR) *f++ = 'C'; /* rfc 2481/3168 */
*f++ = '\0';
}
snprintf(buf, bufsz, "tcp to port %hu; flags: %s", pspec->pd.tcp.dport,
Snprintf(buf, bufsz, "tcp to port %hu; flags: %s", pspec->pd.tcp.dport,
flagbuf);
break;
case PS_UDP:
snprintf(buf, bufsz, "udp to port %hu", pspec->pd.udp.dport);
Snprintf(buf, bufsz, "udp to port %hu", pspec->pd.udp.dport);
break;
case PS_PROTO:
snprintf(buf, bufsz, "protocol %u", (unsigned int) pspec->proto);
Snprintf(buf, bufsz, "protocol %u", (unsigned int) pspec->proto);
break;
case PS_ARP:
snprintf(buf, bufsz, "ARP");
Snprintf(buf, bufsz, "ARP");
break;
default:
fatal("Unexpected %s type encountered", __func__);
@@ -2675,11 +2675,11 @@ static bool do_one_select_round(UltraScanInfo *USI, struct timeval *stime) {
case ENETDOWN:
case ENETRESET:
case ECONNABORTED:
snprintf(buf, sizeof(buf), "Strange SO_ERROR from connection to %s (%d - '%s') -- bailing scan", host->target->targetipstr(), optval, strerror(optval) );
Snprintf(buf, sizeof(buf), "Strange SO_ERROR from connection to %s (%d - '%s') -- bailing scan", host->target->targetipstr(), optval, strerror(optval) );
pfatal(buf);
break;
default:
snprintf(buf, sizeof(buf), "Strange read error from %s (%d - '%s')", host->target->targetipstr(), optval, strerror(optval));
Snprintf(buf, sizeof(buf), "Strange read error from %s (%d - '%s')", host->target->targetipstr(), optval, strerror(optval));
perror(buf);
break;
}
@@ -3258,7 +3258,7 @@ static void begin_sniffer(UltraScanInfo *USI, vector<Target *> &Targets) {
if (doIndividual) {
for(targetno = 0; targetno < Targets.size(); targetno++) {
len = snprintf(dst_hosts + filterlen,
len = Snprintf(dst_hosts + filterlen,
sizeof(dst_hosts) - filterlen,
"%ssrc host %s", (targetno == 0)? "" : " or ",
Targets[targetno]->targetipstr());
@@ -3273,11 +3273,11 @@ static void begin_sniffer(UltraScanInfo *USI, vector<Target *> &Targets) {
if (USI->tcp_scan || USI->udp_scan) {
if (doIndividual)
len = snprintf(pcap_filter, sizeof(pcap_filter),
len = Snprintf(pcap_filter, sizeof(pcap_filter),
"dst host %s and (icmp or (%s and (%s)))",
inet_ntoa(Targets[0]->v4source()),
(USI->tcp_scan)? "tcp" : "udp", dst_hosts);
else len = snprintf(pcap_filter, sizeof(pcap_filter),
else len = Snprintf(pcap_filter, sizeof(pcap_filter),
"dst host %s and (icmp or %s)",
inet_ntoa(Targets[0]->v4source()),
(USI->tcp_scan)? "tcp" : "udp");
@@ -3286,11 +3286,11 @@ static void begin_sniffer(UltraScanInfo *USI, vector<Target *> &Targets) {
filterlen = len;
} else if (USI->prot_scan) {
if (doIndividual)
len = snprintf(pcap_filter, sizeof(pcap_filter),
len = Snprintf(pcap_filter, sizeof(pcap_filter),
"dst host %s and (icmp or (%s))",
inet_ntoa(Targets[0]->v4source()), dst_hosts);
else
len = snprintf(pcap_filter, sizeof(pcap_filter), "dst host %s",
len = Snprintf(pcap_filter, sizeof(pcap_filter), "dst host %s",
inet_ntoa(Targets[0]->v4source()));
if (len < 0 || len >= (int) sizeof(pcap_filter))
fatal("ran out of space in pcap filter");
@@ -3298,7 +3298,7 @@ static void begin_sniffer(UltraScanInfo *USI, vector<Target *> &Targets) {
} else if (USI->ping_scan_arp) {
const u8 *mac = Targets[0]->SrcMACAddress();
assert(mac);
len = snprintf(pcap_filter, sizeof(pcap_filter),
len = Snprintf(pcap_filter, sizeof(pcap_filter),
"arp and ether dst host %02X:%02X:%02X:%02X:%02X:%02X",
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
if (len < 0 || len >= (int) sizeof(pcap_filter))
@@ -3456,7 +3456,7 @@ void ultra_scan(vector<Target *> &Targets, struct scan_lists *ports,
bool plural = (Targets.size() != 1);
if (!plural) {
(*(Targets.begin()))->NameIP(targetstr, sizeof(targetstr));
} else snprintf(targetstr, sizeof(targetstr), "%d hosts", (int) Targets.size());
} else Snprintf(targetstr, sizeof(targetstr), "%d hosts", (int) Targets.size());
log_write(LOG_STDOUT, "Scanning %s [%d port%s%s]\n", targetstr, USI->gstats->numprobes, (USI->gstats->numprobes != 1)? "s" : "", plural? "/host" : "");
}
@@ -3508,10 +3508,10 @@ void ultra_scan(vector<Target *> &Targets, struct scan_lists *ports,
if (o.verbose) {
char additional_info[128];
if (USI->gstats->num_hosts_timedout == 0)
snprintf(additional_info, sizeof(additional_info), "%lu total %s",
Snprintf(additional_info, sizeof(additional_info), "%lu total %s",
(unsigned long) USI->gstats->numprobes * Targets.size(),
(scantype == PING_SCAN_ARP)? "hosts" : "ports");
else snprintf(additional_info, sizeof(additional_info), "%d %s timed out",
else Snprintf(additional_info, sizeof(additional_info), "%d %s timed out",
USI->gstats->num_hosts_timedout,
(USI->gstats->num_hosts_timedout == 1)? "host" : "hosts");
USI->SPM->endTask(NULL, additional_info);
@@ -3540,7 +3540,7 @@ void bounce_scan(Target *target, u16 *portarray, int numports,
if (! numports) return; /* nothing to scan for */
snprintf(targetstr, 20, "%d,%d,%d,%d,", UC(t[0]), UC(t[1]), UC(t[2]), UC(t[3]));
Snprintf(targetstr, 20, "%d,%d,%d,%d,", UC(t[0]), UC(t[1]), UC(t[2]), UC(t[3]));
starttime = time(NULL);
if (o.verbose || o.debugging) {
@@ -3557,7 +3557,7 @@ void bounce_scan(Target *target, u16 *portarray, int numports,
portno = htons(portarray[i]);
p1 = ((unsigned char *) &portno)[0];
p2 = ((unsigned char *) &portno)[1];
snprintf(command, 512, "PORT %s%i,%i\r\n", targetstr, p1,p2);
Snprintf(command, 512, "PORT %s%i,%i\r\n", targetstr, p1,p2);
if (o.debugging) log_write(LOG_STDOUT, "Attempting command: %s", command);
if (send(sd, command, strlen(command), 0) < 0 ) {
gh_perror("send in %s", __func__);
@@ -3830,7 +3830,7 @@ void pos_scan(Target *target, u16 *portarray, int numports, stype scantype) {
// no RPC ports need scanning.
if (!SPM) {
char scanname[48];
snprintf(scanname, sizeof(scanname), "%s against %s", scantype2str(scantype), target->NameIP());
Snprintf(scanname, sizeof(scanname), "%s against %s", scantype2str(scantype), target->NameIP());
scanname[sizeof(scanname) - 1] = '\0';
SPM = new ScanProgressMeter(scanname);
}
@@ -3990,7 +3990,7 @@ void pos_scan(Target *target, u16 *portarray, int numports, stype scantype) {
numports = rpcportsscanned;
if (SPM && o.verbose && (numports > 0)) {
char scannedportsstr[14];
snprintf(scannedportsstr, sizeof(scannedportsstr), "%d %s", numports, (numports > 1)? "ports" : "port");
Snprintf(scannedportsstr, sizeof(scannedportsstr), "%d %s", numports, (numports > 1)? "ports" : "port");
SPM->endTask(NULL, scannedportsstr);
}
posscan_timedout:

View File

@@ -1411,12 +1411,12 @@ void ServiceNFO::addToServiceFingerprint(const char *probeName, const u8 *resp,
if (servicefplen == 0) {
timep = time(NULL);
ltime = localtime(&timep);
servicefplen = snprintf(servicefp, spaceleft, "SF-Port%hu-%s:V=%s%s%%I=%d%%D=%d/%d%%Time=%X%%P=%s", portno, proto2ascii(proto, true), NMAP_VERSION, (tunnel == SERVICE_TUNNEL_SSL)? "%T=SSL" : "", o.version_intensity, ltime->tm_mon + 1, ltime->tm_mday, (int) timep, NMAP_PLATFORM);
servicefplen = Snprintf(servicefp, spaceleft, "SF-Port%hu-%s:V=%s%s%%I=%d%%D=%d/%d%%Time=%X%%P=%s", portno, proto2ascii(proto, true), NMAP_VERSION, (tunnel == SERVICE_TUNNEL_SSL)? "%T=SSL" : "", o.version_intensity, ltime->tm_mon + 1, ltime->tm_mday, (int) timep, NMAP_PLATFORM);
}
// Note that we give the total length of the response, even though we
// may truncate
len = snprintf(buf, sizeof(buf), "%%r(%s,%X,\"", probeName, resplen);
len = Snprintf(buf, sizeof(buf), "%%r(%s,%X,\"", probeName, resplen);
addServiceString(buf, servicewrap);
// Now for the probe response itself ...
@@ -1446,7 +1446,7 @@ void ServiceNFO::addToServiceFingerprint(const char *probeName, const u8 *resp,
} else {
addServiceChar('\\', servicewrap);
addServiceChar('x', servicewrap);
snprintf(buf, sizeof(buf), "%02x", resp[srcidx]);
Snprintf(buf, sizeof(buf), "%02x", resp[srcidx]);
addServiceChar(*buf, servicewrap);
addServiceChar(*(buf+1), servicewrap);
}
@@ -2394,7 +2394,7 @@ int service_scan(vector<Target *> &Targets) {
bool plural = (Targets.size() != 1);
if (!plural) {
(*(Targets.begin()))->NameIP(targetstr, sizeof(targetstr));
} else snprintf(targetstr, sizeof(targetstr), "%u hosts", (unsigned) Targets.size());
} else Snprintf(targetstr, sizeof(targetstr), "%u hosts", (unsigned) Targets.size());
log_write(LOG_STDOUT, "Scanning %u %s on %s\n",
(unsigned) SG->services_remaining.size(),
@@ -2430,11 +2430,11 @@ int service_scan(vector<Target *> &Targets) {
if (o.verbose) {
char additional_info[128];
if (SG->num_hosts_timedout == 0)
snprintf(additional_info, sizeof(additional_info), "%u %s on %u %s",
Snprintf(additional_info, sizeof(additional_info), "%u %s on %u %s",
(unsigned) SG->services_finished.size(),
(SG->services_finished.size() == 1)? "service" : "services",
(unsigned) Targets.size(), (Targets.size() == 1)? "host" : "hosts");
else snprintf(additional_info, sizeof(additional_info), "%u %s timed out",
else Snprintf(additional_info, sizeof(additional_info), "%u %s timed out",
SG->num_hosts_timedout,
(SG->num_hosts_timedout == 1)? "host" : "hosts");
SG->SPM->endTask(NULL, additional_info);

View File

@@ -1215,7 +1215,7 @@ while(pt->block_unaccounted) {
newstate = HOST_DOWN;
break;
default:
snprintf (buf, sizeof(buf), "Strange read error from %s", hostbatch[hostindex]->targetipstr());
Snprintf (buf, sizeof(buf), "Strange read error from %s", hostbatch[hostindex]->targetipstr());
error("%s: %s", buf, strerror(sock_err));
break;
}
@@ -1612,7 +1612,7 @@ static void massping(Target *hostbatch[], int num_hosts,
= 104 byte snaplen */
pd = my_pcap_open_live(hostbatch[0]->deviceName(), 104, o.spoofsource, pcap_selectable_fd_valid()? 200 : 15);
snprintf(filter, sizeof(filter), "(icmp and dst host %s) or ((tcp or udp) and dst host %s and ( dst port %d or dst port %d or dst port %d or dst port %d or dst port %d))",
Snprintf(filter, sizeof(filter), "(icmp and dst host %s) or ((tcp or udp) and dst host %s and ( dst port %d or dst port %d or dst port %d or dst port %d or dst port %d))",
inet_ntoa(hostbatch[0]->v4source()),
inet_ntoa(hostbatch[0]->v4source()),
sportbase , sportbase + 1, sportbase + 2, sportbase + 3,

View File

@@ -187,10 +187,10 @@ static char *ll2shortascii(unsigned long long bytes, char *buf, int buflen) {
if (buflen < 2 || !buf) fatal("Bogus parameter passed to %s", __func__);
if (bytes > 1000000) {
snprintf(buf, buflen, "%.3fMB", bytes / 1000000.0);
Snprintf(buf, buflen, "%.3fMB", bytes / 1000000.0);
} else if (bytes > 10000) {
snprintf(buf, buflen, "%.3fKB", bytes / 1000.0);
} else snprintf(buf, buflen, "%uB", (unsigned int) bytes);
Snprintf(buf, buflen, "%.3fKB", bytes / 1000.0);
} else Snprintf(buf, buflen, "%uB", (unsigned int) bytes);
return buf;
}
@@ -204,7 +204,7 @@ char *getFinalPacketStats(char *buf, int buflen) {
if (buflen <= 10 || !buf)
fatal("%s called with woefully inadequate parameters", __func__);
snprintf(buf, buflen,
Snprintf(buf, buflen,
#if WIN32
"Raw packets sent: %I64u (%s) | Rcvd: %I64u (%s)",
#else
@@ -252,10 +252,10 @@ void PacketTrace::traceArp(pdirection pdir, const u8 *frame, u32 len,
if (frame[21] == 1) /* arp REQUEST */ {
inet_ntop(AF_INET, frame+38, who_has, sizeof(who_has));
inet_ntop(AF_INET, frame+28, tell, sizeof(tell));
snprintf(arpdesc, sizeof(arpdesc), "who-has %s tell %s", who_has, tell);
Snprintf(arpdesc, sizeof(arpdesc), "who-has %s tell %s", who_has, tell);
} else { /* ARP REPLY */
inet_ntop(AF_INET, frame+28, who_has, sizeof(who_has));
snprintf(arpdesc, sizeof(arpdesc),
Snprintf(arpdesc, sizeof(arpdesc),
"reply %s is-at %02X:%02X:%02X:%02X:%02X:%02X", who_has,
frame[22], frame[23], frame[24], frame[25], frame[26], frame[27]);
}
@@ -283,13 +283,13 @@ static void tcppacketoptinfo(u8 *optp, int len, char *result, int bufsize) {
ch = '<';
while(len > 0 && bufsize > 2) {
snprintf(p, bufsize, "%c", ch);
Snprintf(p, bufsize, "%c", ch);
bufsize--;
p++;
opcode=*q++;
if (!opcode) { /* End of List */
snprintf(p, bufsize, "eol");
Snprintf(p, bufsize, "eol");
bufsize -= strlen(p);
p += strlen(p);
@@ -297,7 +297,7 @@ static void tcppacketoptinfo(u8 *optp, int len, char *result, int bufsize) {
} else if (opcode == 1) { /* No Op */
snprintf(p, bufsize, "nop");
Snprintf(p, bufsize, "nop");
bufsize -= strlen(p);
p += strlen(p);
@@ -311,7 +311,7 @@ static void tcppacketoptinfo(u8 *optp, int len, char *result, int bufsize) {
q++;
memcpy(&tmpshort, q, 2);
snprintf(p, bufsize, "mss %u", ntohs(tmpshort));
Snprintf(p, bufsize, "mss %u", ntohs(tmpshort));
bufsize -= strlen(p);
p += strlen(p);
@@ -325,7 +325,7 @@ static void tcppacketoptinfo(u8 *optp, int len, char *result, int bufsize) {
q++;
snprintf(p, bufsize, "wscale %u", *q);
Snprintf(p, bufsize, "wscale %u", *q);
bufsize -= strlen(p);
p += strlen(p);
@@ -337,7 +337,7 @@ static void tcppacketoptinfo(u8 *optp, int len, char *result, int bufsize) {
if(len<2)
break; /* SACK permitted option has 2 bytes */
snprintf(p, bufsize, "sackOK");
Snprintf(p, bufsize, "sackOK");
bufsize -= strlen(p);
p += strlen(p);
@@ -353,17 +353,17 @@ static void tcppacketoptinfo(u8 *optp, int len, char *result, int bufsize) {
q++;
if((sackoptlen-2) % 8 != 0) {
snprintf(p, bufsize, "malformed sack");
Snprintf(p, bufsize, "malformed sack");
bufsize -= strlen(p);
p += strlen(p);
} else {
snprintf(p, bufsize, "sack %d ", (sackoptlen-2)/8);
Snprintf(p, bufsize, "sack %d ", (sackoptlen-2)/8);
bufsize -= strlen(p);
p += strlen(p);
for(int i = 0; i < sackoptlen - 2; i += 8) {
memcpy(&tmpword1, q + i, 4);
memcpy(&tmpword2, q + i + 4, 4);
snprintf(p, bufsize, "{%u:%u}", tmpword1, tmpword2);
Snprintf(p, bufsize, "{%u:%u}", tmpword1, tmpword2);
bufsize -= strlen(p);
p += strlen(p);
}
@@ -381,7 +381,7 @@ static void tcppacketoptinfo(u8 *optp, int len, char *result, int bufsize) {
memcpy(&tmpword1, q, 4);
memcpy(&tmpword2, q+4, 4);
snprintf(p, bufsize, "timestamp %u %u", ntohl(tmpword1), ntohl(tmpword2));
Snprintf(p, bufsize, "timestamp %u %u", ntohl(tmpword1), ntohl(tmpword2));
bufsize -= strlen(p);
p += strlen(p);
@@ -398,7 +398,7 @@ static void tcppacketoptinfo(u8 *optp, int len, char *result, int bufsize) {
return;
}
snprintf(p, bufsize, ">");
Snprintf(p, bufsize, ">");
}
/* Returns a buffer of ASCII information about a packet that may look
@@ -433,11 +433,11 @@ static const char *ippackethdrinfo(const u8 *packet, u32 len) {
frag_off = 8 * (ntohs(ip->ip_off) & 8191) /* 2^13 - 1 */;
more_fragments = ntohs(ip->ip_off) & IP_MF;
if (frag_off || more_fragments) {
snprintf(fragnfo, sizeof(fragnfo), " frag offset=%d%s", frag_off, more_fragments ? "+" : "");
Snprintf(fragnfo, sizeof(fragnfo), " frag offset=%d%s", frag_off, more_fragments ? "+" : "");
}
snprintf(ipinfo, sizeof(ipinfo), "ttl=%d id=%d iplen=%d%s %s%s%s",
Snprintf(ipinfo, sizeof(ipinfo), "ttl=%d id=%d iplen=%d%s %s%s%s",
ip->ip_ttl, ntohs(ip->ip_id), ntohs(ip->ip_len), fragnfo,
ip->ip_hl==5?"":"ipopts={",
ip->ip_hl==5?"":print_ip_options((u8*)ip + sizeof(struct ip), MIN((ip->ip_hl-5)*4,len-sizeof(struct ip))),
@@ -451,7 +451,7 @@ static const char *ippackethdrinfo(const u8 *packet, u32 len) {
tcp = (struct tcp_hdr *) (packet + ip->ip_hl * 4);
if (frag_off > 8 || len < (u32) ip->ip_hl * 4 + 8)
snprintf(protoinfo, sizeof(protoinfo), "TCP %s:?? > %s:?? ?? %s (incomplete)", srchost, dsthost, ipinfo);
Snprintf(protoinfo, sizeof(protoinfo), "TCP %s:?? > %s:?? ?? %s (incomplete)", srchost, dsthost, ipinfo);
else if (frag_off == 8) {// at least we can get TCP flags and ACKn
tcp = (struct tcp_hdr *)((u8 *) tcp - frag_off); // ugly?
p = tflags;
@@ -462,7 +462,7 @@ static const char *ippackethdrinfo(const u8 *packet, u32 len) {
if (tcp->th_flags & TH_PUSH) *p++ = 'P';
if (tcp->th_flags & TH_ACK) {
*p++ = 'A';
snprintf(tcpinfo, sizeof(tcpinfo), " ack=%lu",
Snprintf(tcpinfo, sizeof(tcpinfo), " ack=%lu",
(unsigned long) ntohl(tcp->th_ack));
}
if (tcp->th_flags & TH_URG) *p++ = 'U';
@@ -473,7 +473,7 @@ static const char *ippackethdrinfo(const u8 *packet, u32 len) {
if((u32) tcp->th_off * 4 > sizeof(struct tcp_hdr)) {
// tcp options
if(len < (u32) ip->ip_hl * 4 + (u32) tcp->th_off * 4 - frag_off) {
snprintf(tcpoptinfo, sizeof(tcpoptinfo), "option incomplete");
Snprintf(tcpoptinfo, sizeof(tcpoptinfo), "option incomplete");
} else {
tcppacketoptinfo((u8*) tcp + sizeof(struct tcp_hdr),
@@ -482,15 +482,15 @@ static const char *ippackethdrinfo(const u8 *packet, u32 len) {
}
}
snprintf(protoinfo, sizeof(protoinfo), "TCP %s:?? > %s:?? %s %s %s %s",
Snprintf(protoinfo, sizeof(protoinfo), "TCP %s:?? > %s:?? %s %s %s %s",
srchost, dsthost, tflags, ipinfo, tcpinfo, tcpoptinfo);
} else if (len < (u32) ip->ip_hl * 4 + 16) { // we can get ports and seq
snprintf(tcpinfo, sizeof(tcpinfo), "seq=%lu (incomplete)", (unsigned long) ntohl(tcp->th_seq));
snprintf(protoinfo, sizeof(protoinfo), "TCP %s:%d > %s:%d ?? %s %s",
Snprintf(tcpinfo, sizeof(tcpinfo), "seq=%lu (incomplete)", (unsigned long) ntohl(tcp->th_seq));
Snprintf(protoinfo, sizeof(protoinfo), "TCP %s:%d > %s:%d ?? %s %s",
srchost, ntohs(tcp->th_sport), dsthost, ntohs(tcp->th_dport), ipinfo, tcpinfo);
} else { // at least first 16 bytes of TCP header are there
snprintf(tcpinfo, sizeof(tcpinfo), "seq=%lu win=%hu",
Snprintf(tcpinfo, sizeof(tcpinfo), "seq=%lu win=%hu",
(unsigned long) ntohl(tcp->th_seq),
ntohs(tcp->th_win));
p = tflags;
@@ -501,7 +501,7 @@ static const char *ippackethdrinfo(const u8 *packet, u32 len) {
if (tcp->th_flags & TH_PUSH) *p++ = 'P';
if (tcp->th_flags & TH_ACK) {
*p++ = 'A';
snprintf(buf, sizeof(buf), " ack=%lu",
Snprintf(buf, sizeof(buf), " ack=%lu",
(unsigned long) ntohl(tcp->th_ack));
strncat(tcpinfo, buf, sizeof(tcpinfo) - strlen(tcpinfo) - 1);
}
@@ -513,7 +513,7 @@ static const char *ippackethdrinfo(const u8 *packet, u32 len) {
if((u32) tcp->th_off * 4 > sizeof(struct tcp_hdr)) {
// tcp options
if(len < (u32) ip->ip_hl * 4 + (u32) tcp->th_off * 4) {
snprintf(tcpoptinfo, sizeof(tcpoptinfo), "option incomplete");
Snprintf(tcpoptinfo, sizeof(tcpoptinfo), "option incomplete");
} else {
tcppacketoptinfo((u8*) tcp + sizeof(struct tcp_hdr),
@@ -522,20 +522,20 @@ static const char *ippackethdrinfo(const u8 *packet, u32 len) {
}
}
snprintf(protoinfo, sizeof(protoinfo), "TCP %s:%d > %s:%d %s %s %s %s",
Snprintf(protoinfo, sizeof(protoinfo), "TCP %s:%d > %s:%d %s %s %s %s",
srchost, ntohs(tcp->th_sport), dsthost, ntohs(tcp->th_dport),
tflags, ipinfo, tcpinfo, tcpoptinfo);
}
} else if (ip->ip_p == IPPROTO_UDP && frag_off) {
snprintf(protoinfo, sizeof(protoinfo), "UDP %s:?? > %s:?? fragment %s (incomplete)", srchost, dsthost, ipinfo);
Snprintf(protoinfo, sizeof(protoinfo), "UDP %s:?? > %s:?? fragment %s (incomplete)", srchost, dsthost, ipinfo);
} else if (ip->ip_p == IPPROTO_UDP) {
udp = (struct udp_hdr *) (packet + sizeof(struct ip));
snprintf(protoinfo, sizeof(protoinfo), "UDP %s:%d > %s:%d %s",
Snprintf(protoinfo, sizeof(protoinfo), "UDP %s:%d > %s:%d %s",
srchost, ntohs(udp->uh_sport), dsthost, ntohs(udp->uh_dport),
ipinfo);
} else if (ip->ip_p == IPPROTO_ICMP && frag_off) {
snprintf(protoinfo, sizeof(protoinfo), "ICMP %s > %s fragment %s (incomplete)", srchost, dsthost, ipinfo);
Snprintf(protoinfo, sizeof(protoinfo), "ICMP %s > %s fragment %s (incomplete)", srchost, dsthost, ipinfo);
} else if (ip->ip_p == IPPROTO_ICMP) {
char icmptype[128];
char *ip2dst;
@@ -558,19 +558,19 @@ static const char *ippackethdrinfo(const u8 *packet, u32 len) {
ip2dst = inet_ntoa(ip2->ip_dst);
switch (ping->code) {
case 0:
snprintf(icmptype, sizeof icmptype, "network %s unreachable", ip2dst);
Snprintf(icmptype, sizeof icmptype, "network %s unreachable", ip2dst);
break;
case 1:
snprintf(icmptype, sizeof icmptype, "host %s unreachable", ip2dst);
Snprintf(icmptype, sizeof icmptype, "host %s unreachable", ip2dst);
break;
case 2:
snprintf(icmptype, sizeof icmptype, "protocol %u unreachable", ip2->ip_p);
Snprintf(icmptype, sizeof icmptype, "protocol %u unreachable", ip2->ip_p);
break;
case 3:
if (ip2->ip_p == IPPROTO_UDP)
snprintf(icmptype, sizeof icmptype, "port %u unreachable", ntohs(udp->uh_dport));
Snprintf(icmptype, sizeof icmptype, "port %u unreachable", ntohs(udp->uh_dport));
else if (ip2->ip_p == IPPROTO_TCP)
snprintf(icmptype, sizeof icmptype, "port %u unreachable", ntohs(tcp->th_dport));
Snprintf(icmptype, sizeof icmptype, "port %u unreachable", ntohs(tcp->th_dport));
else
strcpy(icmptype, "port unreachable");
break;
@@ -581,25 +581,25 @@ static const char *ippackethdrinfo(const u8 *packet, u32 len) {
strcpy(icmptype, "source route failed");
break;
case 6:
snprintf(icmptype, sizeof icmptype, "destination network %s unknown", ip2dst);
Snprintf(icmptype, sizeof icmptype, "destination network %s unknown", ip2dst);
break;
case 7:
snprintf(icmptype, sizeof icmptype, "destination host %s unknown", ip2dst);
Snprintf(icmptype, sizeof icmptype, "destination host %s unknown", ip2dst);
break;
case 8:
strcpy(icmptype, "source host isolated");
break;
case 9:
snprintf(icmptype, sizeof icmptype, "destination network %s administratively prohibited", ip2dst);
Snprintf(icmptype, sizeof icmptype, "destination network %s administratively prohibited", ip2dst);
break;
case 10:
snprintf(icmptype, sizeof icmptype, "destination host %s administratively prohibited", ip2dst);
Snprintf(icmptype, sizeof icmptype, "destination host %s administratively prohibited", ip2dst);
break;
case 11:
snprintf(icmptype, sizeof icmptype, "network %s unreachable for TOS", ip2dst);
Snprintf(icmptype, sizeof icmptype, "network %s unreachable for TOS", ip2dst);
break;
case 12:
snprintf(icmptype, sizeof icmptype, "host %s unreachable for TOS", ip2dst);
Snprintf(icmptype, sizeof icmptype, "host %s unreachable for TOS", ip2dst);
break;
case 13:
strcpy(icmptype, "communication administratively prohibited by filtering");
@@ -664,10 +664,10 @@ static const char *ippackethdrinfo(const u8 *packet, u32 len) {
strcpy(icmptype, "Unknown type"); break;
break;
}
snprintf(protoinfo, sizeof(protoinfo), "ICMP %s > %s %s (type=%d/code=%d) %s",
Snprintf(protoinfo, sizeof(protoinfo), "ICMP %s > %s %s (type=%d/code=%d) %s",
srchost, dsthost, icmptype, ping->type, ping->code, ipinfo);
} else {
snprintf(protoinfo, sizeof(protoinfo), "Unknown protocol (%d) %s > %s: %s",
Snprintf(protoinfo, sizeof(protoinfo), "Unknown protocol (%d) %s > %s: %s",
ip->ip_p, srchost, dsthost, ipinfo);
}
@@ -735,7 +735,7 @@ void PacketTrace::traceConnect(u8 proto, const struct sockaddr *sock,
if (connectrc == 0)
Strncpy(errbuf, "Connected", sizeof(errbuf));
else {
snprintf(errbuf, sizeof(errbuf), "%s", strerror(connect_errno));
Snprintf(errbuf, sizeof(errbuf), "%s", strerror(connect_errno));
}
if (sin->sin_family == AF_INET) {
@@ -2456,7 +2456,7 @@ void set_pcap_filter(const char *device,
fatal("Failed to lookup subnet/netmask for device (%s): %s", device, err0r);
va_start(ap, bpf);
if (vsnprintf(buf, sizeof(buf), bpf, ap) >= (int) sizeof(buf))
if (Vsnprintf(buf, sizeof(buf), bpf, ap) >= (int) sizeof(buf))
fatal("%s called with too-large filter arg\n", __func__);
va_end(ap);

View File

@@ -940,9 +940,9 @@ Traceroute::addConsolidationMessage(NmapOutputTable *Tbl, unsigned short row_cou
char *ip = inet_ntoa(ref_ipaddr);
if(ttl == 1)
len = snprintf(mbuf, 64, "Hop 1 is the same as for %s", ip);
len = Snprintf(mbuf, 64, "Hop 1 is the same as for %s", ip);
else
len = snprintf(mbuf, 64, "Hops 1-%d are the same as for %s", ttl, ip);
len = Snprintf(mbuf, 64, "Hops 1-%d are the same as for %s", ttl, ip);
assert(len);
Tbl->addItem(row_count, HOP_COL, true, "-", 1);
@@ -1061,7 +1061,7 @@ Traceroute::outputTarget (Target * t) {
/* normal hop output (rtt, ip and hostname) */
if (!tp->timing.consolidated && !last_consolidation) {
snprintf(timebuf, 16, "%.2f", (float)
Snprintf(timebuf, 16, "%.2f", (float)
TIMEVAL_SUBTRACT (tp->timing.recvTime, tp->timing.sendTime) / 1000);
Tbl->addItemFormatted (row_count, HOP_COL, false, "%d", tp->ttl);
if (tp->timing.getState () != P_TIMEDOUT) {
@@ -1340,9 +1340,9 @@ const char *TraceProbe::nameIP(void) {
hostnameip = (char *) safe_zalloc(NAMEIPLEN);
if(hostname == NULL || *hostname == NULL)
snprintf(hostnameip, NAMEIPLEN, "%s", inet_ntoa(ipreplysrc));
Snprintf(hostnameip, NAMEIPLEN, "%s", inet_ntoa(ipreplysrc));
else
snprintf(hostnameip, NAMEIPLEN, "%s (%s)",*hostname, inet_ntoa(ipreplysrc));
Snprintf(hostnameip, NAMEIPLEN, "%s (%s)",*hostname, inet_ntoa(ipreplysrc));
return hostnameip;
}
@@ -1489,8 +1489,8 @@ hostStr (u32 ip) {
memset (nameipbuf, '\0', MAXHOSTNAMELEN + INET6_ADDRSTRLEN);
addr.s_addr = ip;
if((hname = lookup_cached_host(ip)) == "")
snprintf(nameipbuf, MAXHOSTNAMELEN+INET6_ADDRSTRLEN, "%s", inet_ntoa(addr));
Snprintf(nameipbuf, MAXHOSTNAMELEN+INET6_ADDRSTRLEN, "%s", inet_ntoa(addr));
else
snprintf (nameipbuf, MAXHOSTNAMELEN + INET6_ADDRSTRLEN, "%s (%s)", hname, inet_ntoa (addr));
Snprintf (nameipbuf, MAXHOSTNAMELEN + INET6_ADDRSTRLEN, "%s (%s)", hname, inet_ntoa (addr));
return nameipbuf;
}

View File

@@ -745,19 +745,19 @@ void bintohexstr(char *buf, int buflen, char *src, int srclen){
int bp=0;
int i;
for(i=0; i<srclen; i++){
bp += snprintf(buf+bp, buflen-bp, "\\x%02hhx",src[i]);
bp += Snprintf(buf+bp, buflen-bp, "\\x%02hhx",src[i]);
if(bp >= buflen)break;
if(i%16==7){
bp += snprintf(buf+bp, buflen-bp," ");
bp += Snprintf(buf+bp, buflen-bp," ");
if(bp >= buflen)break;
}
if(i%16==15){
bp += snprintf(buf+bp, buflen-bp,"\n");
bp += Snprintf(buf+bp, buflen-bp,"\n");
if(bp >= buflen)break;
}
}
if(i%16!=0 && bp < buflen)
bp += snprintf(buf+bp, buflen-bp,"\n");
bp += Snprintf(buf+bp, buflen-bp,"\n");
}
static inline char* STRAPP(char *fmt, ...) {
@@ -772,7 +772,7 @@ static inline char* STRAPP(char *fmt, ...) {
return buf;
va_list ap;
va_start(ap, fmt);
bp += vsnprintf (buf+bp, left, fmt, ap);
bp += Vsnprintf (buf+bp, left, fmt, ap);
va_end(ap);
return(buf);