plug a buffer underflow read we executed with *every* testsuite run and
*every* interactive shell session (history didn’t contain anything when we tested for ignoredups)… first caught by the new code… d’uuuuuuuuuuh!
This commit is contained in:
		| @@ -27,7 +27,7 @@ | |||||||
| #include <sys/file.h> | #include <sys/file.h> | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| __RCSID("$MirOS: src/bin/mksh/histrap.c,v 1.153 2016/01/21 18:24:40 tg Exp $"); | __RCSID("$MirOS: src/bin/mksh/histrap.c,v 1.154 2016/02/24 01:45:59 tg Exp $"); | ||||||
|  |  | ||||||
| Trap sigtraps[ksh_NSIG + 1]; | Trap sigtraps[ksh_NSIG + 1]; | ||||||
| static struct sigaction Sigact_ign; | static struct sigaction Sigact_ign; | ||||||
| @@ -658,7 +658,9 @@ histsave(int *lnp, const char *cmd, int svmode, bool ignoredups) | |||||||
| 	strndupx(c, cmd, ccp - cmd, APERM); | 	strndupx(c, cmd, ccp - cmd, APERM); | ||||||
|  |  | ||||||
| 	if (svmode != HIST_APPEND) { | 	if (svmode != HIST_APPEND) { | ||||||
| 		if (ignoredups && !strcmp(c, *histptr) | 		if (ignoredups && | ||||||
|  | 		    histptr >= history && | ||||||
|  | 		    !strcmp(c, *histptr) | ||||||
| #if !defined(MKSH_SMALL) && HAVE_PERSISTENT_HISTORY | #if !defined(MKSH_SMALL) && HAVE_PERSISTENT_HISTORY | ||||||
| 		    && !histsync() | 		    && !histsync() | ||||||
| #endif | #endif | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user