SMOLNET PORTAL home about changes
iuse strncpy and a null terminator, use strncacestr - iomenu - interactive terminal-based selection menu	Err	bitreich.org	70
hgit clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu	URL:git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu	bitreich.org	70
1Log	/scm/iomenu/log.gph	bitreich.org	70
1Files	/scm/iomenu/files.gph	bitreich.org	70
1Refs	/scm/iomenu/refs.gph	bitreich.org	70
1Tags	/scm/iomenu/tag	bitreich.org	70
1README	/scm/iomenu/file/README.gph	bitreich.org	70
1LICENSE	/scm/iomenu/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit 9adba189e74c6b6752d04f8e6954177b35a99bbd	/scm/iomenu/commit/9adba189e74c6b6752d04f8e6954177b35a99bbd.gph	bitreich.org	70
1parent c1f1cc577680699b8fe524d33d7de2e6d2bfe173	/scm/iomenu/commit/c1f1cc577680699b8fe524d33d7de2e6d2bfe173.gph	bitreich.org	70
hAuthor: Josuah Demangeon <mail@josuah.net>	URL:mailto:mail@josuah.net	bitreich.org	70
iDate:   Sun, 31 Dec 2017 18:30:56 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
iuse strncpy and a null terminator, use strncacestr	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M iomenu.c                            |      32 +++++++++++++++++++++++++++----	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 28 insertions(+), 4 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/iomenu.c b/iomenu.c	/scm/iomenu/file/iomenu.c.gph	bitreich.org	70
i@@ -33,6 +33,27 @@ char                input[LINE_MAX], formatted[LINE_MAX * 8];	Err	bitreich.org	70
i char        *flag_p = "";	Err	bitreich.org	70
i int        flag_hs = 0;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+static char *	Err	bitreich.org	70
i+strcasestr(const char *str1, const char *str2)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        const        char        *s1;	Err	bitreich.org	70
i+        const        char        *s2;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        while (1) {	Err	bitreich.org	70
i+                s1 = str1;	Err	bitreich.org	70
i+                s2 = str2;	Err	bitreich.org	70
i+                while (*s1 != '\0' && tolower(*s1) == tolower(*s2))	Err	bitreich.org	70
i+                        s1++, s2++;	Err	bitreich.org	70
i+                if (*s2 == '\0')	Err	bitreich.org	70
i+                        return (char *) str1;	Err	bitreich.org	70
i+                if (*s1 == '\0')	Err	bitreich.org	70
i+                        return NULL;	Err	bitreich.org	70
i+                str1++;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        return NULL;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i /*	Err	bitreich.org	70
i  * Keep the line if it match every token (in no particular order, and allowed to	Err	bitreich.org	70
i  * be overlapping).	Err	bitreich.org	70
i@@ -43,7 +64,7 @@ match_line(char *line, char **tokv, int tokc)	Err	bitreich.org	70
i         if (flag_hs && line[0] == '#')	Err	bitreich.org	70
i                 return 2;	Err	bitreich.org	70
i         while (tokc-- > 0)	Err	bitreich.org	70
i-                if (strstr(line, tokv[tokc]) == NULL)	Err	bitreich.org	70
i+                if (strcasestr(line, tokv[tokc]) == NULL)	Err	bitreich.org	70
i                         return 0;	Err	bitreich.org	70
i         return 1;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i@@ -143,7 +164,8 @@ filter(void)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         tokv = NULL;	Err	bitreich.org	70
i         cur = 0;	Err	bitreich.org	70
i-        strcpy(buf, input);	Err	bitreich.org	70
i+        strncpy(buf, input, sizeof(input));	Err	bitreich.org	70
i+        buf[sizeof(input) - 1] = '\0';	Err	bitreich.org	70
i         tokc = 0;	Err	bitreich.org	70
i         n = 0;	Err	bitreich.org	70
i         s = strtok(buf, " ");	Err	bitreich.org	70
i@@ -286,8 +308,10 @@ top:	Err	bitreich.org	70
i                 move_page(+1);	Err	bitreich.org	70
i                 break;	Err	bitreich.org	70
i         case CTL('I'):  /* tab */	Err	bitreich.org	70
i-                if (linec > 0)	Err	bitreich.org	70
i-                        strcpy(input, matchv[cur]);	Err	bitreich.org	70
i+                if (linec > 0) {	Err	bitreich.org	70
i+                        strncpy(input, matchv[cur], sizeof(input));	Err	bitreich.org	70
i+                        input[sizeof(input) - 1] = '\0';	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i                 filter();	Err	bitreich.org	70
i                 break;	Err	bitreich.org	70
i         case CTL('J'):  /* enter */	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/iomenu/commit/9adba189e74c6b6...
Content-Typetext/plain; charset=utf-8