Do not search NMAPDATADIR on Windows as it is not defined. See #2051

This commit is contained in:
dmiller 2020-08-28 15:06:08 +00:00
parent a734cd752c
commit 3635595b24
6 changed files with 18 additions and 14 deletions

View file

@ -2318,12 +2318,12 @@ found:
<member><option>--datadir</option></member>
<member><envar>$NMAPDIR</envar><indexterm><primary><envar>NMAPDIR</envar> environment variable</primary></indexterm></member>
<member><filename>~/.nmap</filename> (not searched on Windows)<indexterm><primary sortas="nmap directory"><filename>.nmap</filename> directory</primary></indexterm></member>
<member><filename><replaceable>HOME</replaceable>\AppData\Roaming\nmap</filename> (only on Windows)<indexterm><primary sortas="nmap directory"><filename>.nmap</filename> directory</primary></indexterm></member>
<member><filename><replaceable>APPDATA</replaceable>\nmap</filename> (only on Windows)<indexterm><primary sortas="nmap directory"><filename>.nmap</filename> directory</primary></indexterm></member>
<member>the directory containing the <filename>nmap</filename>
executable</member>
<member>the directory containing the <filename>nmap</filename>
executable, followed by <filename>../share/nmap</filename></member>
<member><varname>NMAPDATADIR</varname><indexterm><primary><varname>NMAPDATADIR</varname></primary></indexterm></member>
executable, followed by <filename>../share/nmap</filename> (not searched on Windows)</member>
<member><varname>NMAPDATADIR</varname><indexterm><primary><varname>NMAPDATADIR</varname></primary></indexterm> (not searched on Windows)</member>
<member>the current directory.</member>
</simplelist>
</para>

View file

@ -665,11 +665,12 @@ found:
<member><option>--datadir</option></member>
<member><envar>$NMAPDIR</envar><indexterm><primary><envar>NMAPDIR</envar> environment variable</primary></indexterm></member>
<member><filename>~/.nmap</filename> (not searched on Windows)<indexterm><primary sortas="nmap directory"><filename>.nmap</filename> directory</primary></indexterm></member>
<member><filename><replaceable>APPDATA</replaceable>\nmap</filename> (only on Windows)<indexterm><primary sortas="nmap directory"><filename>.nmap</filename> directory</primary></indexterm></member>
<member>the directory containing the <filename>nmap</filename>
executable</member>
<member>the directory containing the <filename>nmap</filename>
executable, followed by <filename>../share/nmap</filename></member>
<member><varname>NMAPDATADIR</varname><indexterm><primary><varname>NMAPDATADIR</varname></primary></indexterm></member>
executable, followed by <filename>../share/nmap</filename> (not searched on Windows)</member>
<member><varname>NMAPDATADIR</varname><indexterm><primary><varname>NMAPDATADIR</varname></primary></indexterm> (not searched on Windows)</member>
<member>the current directory.</member>
</simplelist>
</para>

16
nmap.cc
View file

@ -2558,13 +2558,15 @@ static int nmap_fetchfile_sub(char *filename_returned, int bufferlen, const char
After that, the following directories are searched in order:
* --datadir
* $NMAPDIR
* [Non-Windows only] ~/.nmap
* [Windows only] ...\Users\<user>\AppData\Roaming\nmap
* $NMAPDIR environment variable
* User's home Nmap directory:
- [Windows] %APPDATA%\nmap
- [Non-Windows] ~/.nmap
* The directory containing the nmap binary
* [Non-Windows only] The directory containing the nmap binary plus
"/../share/nmap"
* NMAPDATADIR */
* [Non-Windows only]:
- The directory containing the nmap binary plus "../share/nmap"
- NMAPDATADIR (usually $prefix/share/nmap)
*/
int nmap_fetchfile(char *filename_returned, int bufferlen, const char *file) {
std::map<std::string, std::string>::iterator iter;
char buf[BUFSIZ];
@ -2681,12 +2683,14 @@ static int nmap_fetchfile_sub(char *filename_returned, int bufferlen, const char
free(dir);
}
#ifndef WIN32
if (!foundsomething) {
res = Snprintf(filename_returned, bufferlen, "%s/%s", NMAPDATADIR, file);
if (res > 0 && res < bufferlen) {
foundsomething = file_is_readable(filename_returned);
}
}
#endif
if (foundsomething && (*filename_returned != '.')) {
res = Snprintf(dot_buffer, sizeof(dot_buffer), "./%s", file);

View file

@ -138,7 +138,6 @@
like strcpy() even if they are done safely */
#define _CRT_SECURE_NO_DEPRECATE 1
#define NMAP_PLATFORM "i686-pc-windows-windows"
#define NMAPDATADIR "c:\\nmap" /* FIXME: I really need to make this dynamic */
#define HAVE_OPENSSL 1
#define HAVE_SSL_SET_TLSEXT_HOST_NAME 1

View file

@ -1133,7 +1133,7 @@ FingerPrintDB *parse_fingerprint_reference_file(const char *dbname) {
char filename[256];
if (nmap_fetchfile(filename, sizeof(filename), dbname) != 1) {
fatal("OS scan requested but I cannot find %s file. It should be in %s, ~/.nmap/ or .", dbname, NMAPDATADIR);
fatal("OS scan requested but I cannot find %s file.", dbname);
}
/* Record where this data file was found. */
o.loaded_data_files[dbname] = filename;

View file

@ -1439,7 +1439,7 @@ static void parse_nmap_service_probes(AllProbes *AP) {
char filename[256];
if (nmap_fetchfile(filename, sizeof(filename), "nmap-service-probes") != 1){
fatal("Service scan requested but I cannot find nmap-service-probes file. It should be in %s, ~/.nmap/ or .", NMAPDATADIR);
fatal("Service scan requested but I cannot find nmap-service-probes file.");
}
parse_nmap_service_probe_file(AP, filename);