about summary refs log tree commit diff
path: root/mscan.c
diff options
context:
space:
mode:
authorLeah Neukirchen <leah@vuxu.org>2020-01-17 12:14:47 +0100
committerLeah Neukirchen <leah@vuxu.org>2020-01-17 12:14:47 +0100
commit513ac7d002d196a8a3b61d8cf5ddee03cede0b94 (patch)
tree690114b4dba7100d65f3499838d1a2e2f1b048c2 /mscan.c
parent55035ad8b28b407f39def5c2b139a29e7e182958 (diff)
downloadmblaze-513ac7d002d196a8a3b61d8cf5ddee03cede0b94.tar.gz
mblaze-513ac7d002d196a8a3b61d8cf5ddee03cede0b94.tar.xz
mblaze-513ac7d002d196a8a3b61d8cf5ddee03cede0b94.zip
mscan: fix underrun in %F when filename doesn't contain three slashes
Diffstat (limited to 'mscan.c')
-rw-r--r--mscan.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/mscan.c b/mscan.c
index 9fd1f4d..6ae1628 100644
--- a/mscan.c
+++ b/mscan.c
@@ -465,13 +465,21 @@ oneline(char *file)
 		case 'F':
 			{
 				char *e = file + strlen(file);
+
+				if (!msg)
+					goto empty;
+
 				while (file < e && *e != '/')
 					e--;
+				if (file == e)
+					goto empty;
 				e--;
 				while (file < e && *e != '/')
 					e--;
 				while (file < e && *e == '/')
 					e--;
+				if (file == e)
+					goto empty;
 				char *b = e;
 				e++;
 				while (file < b && *b != '/')
@@ -480,6 +488,11 @@ oneline(char *file)
 					b++;
 				if (*b == '.')
 					b++;
+
+				if (0) {
+empty:
+					b = e = "";
+				}
 				if (w) {
 					if (w < 0)
 						w = -w;