Browse code

Remove use of snprintf.

Andrew Alderwick authored on 10/01/2022 11:35:45
Showing 1 changed files
... ...
@@ -13,8 +13,6 @@ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
13 13
 WITH REGARD TO THIS SOFTWARE.
14 14
 */
15 15
 
16
-#define _POSIX_C_SOURCE 200809L
17
-
18 16
 #include <stdio.h>
19 17
 #include <dirent.h>
20 18
 #include <string.h>
... ...
@@ -53,13 +51,13 @@ get_entry(char *p, Uint16 len, const char *pathname, const char *basename, int f
53 51
 	if(len < strlen(basename) + 7)
54 52
 		return 0;
55 53
 	if(stat(pathname, &st))
56
-		return fail_nonzero ? snprintf(p, len, "!!!! %s\n", basename) : 0;
54
+		return fail_nonzero ? sprintf(p, "!!!! %s\n", basename) : 0;
57 55
 	else if(S_ISDIR(st.st_mode))
58
-		return snprintf(p, len, "---- %s\n", basename);
56
+		return sprintf(p, "---- %s\n", basename);
59 57
 	else if(st.st_size < 0x10000)
60
-		return snprintf(p, len, "%04x %s\n", (unsigned int)st.st_size, basename);
58
+		return sprintf(p, "%04x %s\n", (unsigned int)st.st_size, basename);
61 59
 	else
62
-		return snprintf(p, len, "???? %s\n", basename);
60
+		return sprintf(p, "???? %s\n", basename);
63 61
 }
64 62
 
65 63
 static Uint16
... ...
@@ -72,7 +70,10 @@ file_read_dir(char *dest, Uint16 len)
72 70
 		Uint16 n;
73 71
 		if(de->d_name[0] == '.' && de->d_name[1] == '\0')
74 72
 			continue;
75
-		snprintf(pathname, sizeof(pathname), "%s/%s", current_filename, de->d_name);
73
+		if(strlen(current_filename) + 1 + strlen(de->d_name) < sizeof(pathname))
74
+			sprintf(pathname, "%s/%s", current_filename, de->d_name);
75
+		else
76
+			pathname[0] = '\0';
76 77
 		n = get_entry(p, len, pathname, de->d_name, 1);
77 78
 		if(!n) break;
78 79
 		p += n;