Commit 05b6b2bd authored by Jan Dittberner's avatar Jan Dittberner

CVE-2016-6318: Fix stack-based buffer overflow when parsing large GECOS fields. (Closes: #834502)

parent 5a7c2716
cracklib2 (2.8.19-3+deb7u1) wheezy-security; urgency=high
* CVE-2016-6318: Fix stack-based buffer overflow when parsing large GECOS
fields. (Closes: #834502)
-- Chris Lamb <lamby@debian.org> Sat, 20 Aug 2016 17:40:02 +0100
cracklib2 (2.8.19-3) unstable; urgency=low
* update debian/patches/libcrack2-error-safer-check-variant.patch with
......
--- cracklib2-2.8.19.orig/lib/fascist.c
+++ cracklib2-2.8.19/lib/fascist.c
@@ -509,7 +509,7 @@ FascistGecos(password, uid)
size_t sbufferlen = LINE_MAX;
#endif
char *uwords[STRINGSIZE];
- char longbuffer[STRINGSIZE * 2];
+ char longbuffer[STRINGSIZE];
#ifdef HAVE_GETPWUID_R
sbuffer = malloc(sbufferlen);
@@ -636,58 +636,67 @@ FascistGecos(password, uid)
{
for (i = 0; i < j; i++)
{
- strcpy(longbuffer, uwords[i]);
- strcat(longbuffer, uwords[j]);
-
- if (GTry(longbuffer, password))
+ if (strlen(uwords[i]) + strlen(uwords[j]) < STRINGSIZE)
{
- if (sbuffer)
- {
- free(sbuffer);
- sbuffer = NULL;
- }
- return _("it is derived from your password entry");
- }
-
- strcpy(longbuffer, uwords[j]);
- strcat(longbuffer, uwords[i]);
+ strcpy(longbuffer, uwords[i]);
+ strcat(longbuffer, uwords[j]);
- if (GTry(longbuffer, password))
- {
- if (sbuffer)
- {
- free(sbuffer);
- sbuffer = NULL;
- }
- return _("it's derived from your password entry");
+ if (GTry(longbuffer, password))
+ {
+ if (sbuffer)
+ {
+ free(sbuffer);
+ sbuffer = NULL;
+ }
+ return _("it is derived from your password entry");
+ }
+
+ strcpy(longbuffer, uwords[j]);
+ strcat(longbuffer, uwords[i]);
+
+ if (GTry(longbuffer, password))
+ {
+ if (sbuffer)
+ {
+ free(sbuffer);
+ sbuffer = NULL;
+ }
+ return _("it's derived from your password entry");
+ }
}
- longbuffer[0] = uwords[i][0];
- longbuffer[1] = '\0';
- strcat(longbuffer, uwords[j]);
-
- if (GTry(longbuffer, password))
+ if (strlen(uwords[j]) < STRINGSIZE - 1)
{
- if (sbuffer)
- {
- free(sbuffer);
- sbuffer = NULL;
- }
- return _("it is derivable from your password entry");
+ longbuffer[0] = uwords[i][0];
+ longbuffer[1] = '\0';
+ strcat(longbuffer, uwords[j]);
+
+ if (GTry(longbuffer, password))
+ {
+ if (sbuffer)
+ {
+ free(sbuffer);
+ sbuffer = NULL;
+ }
+ return _("it is derivable from your password entry");
+ }
}
- longbuffer[0] = uwords[j][0];
- longbuffer[1] = '\0';
- strcat(longbuffer, uwords[i]);
-
- if (GTry(longbuffer, password))
+ if (strlen(uwords[i]) < STRINGSIZE - 1)
{
- if (sbuffer)
- {
- free(sbuffer);
- sbuffer = NULL;
- }
- return _("it's derivable from your password entry");
+ longbuffer[0] = uwords[j][0];
+ longbuffer[1] = '\0';
+ strcat(longbuffer, uwords[i]);
+
+ if (GTry(longbuffer, password))
+ {
+ if (sbuffer)
+ {
+ free(sbuffer);
+ sbuffer = NULL;
+ }
+ return _("it's derivable from your password entry");
+ }
}
}
}
install-debian-python-modules.patch
pass-dict-to-cracklib-test.patch
libcrack2-error-safer-check-variant.patch
CVE-2016-6318patch
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment