Purpose of commit: bugfix
Commit summary:
---------------
2008-02-18 Dmitry V. Levin <ldv@altlinux.org>
* libpam/pam_handlers.c (_pam_assemble_line): Fix potential
buffer overflow.
* xtests/tst-pam_assemble_line.pamd: New test for
_pam_assemble_line.
* xtests/tst-pam_assemble_line.sh: New script for
tst-pam_assemble_line.
* xtests/Makefile.am (NOSRCTESTS): Add tst-pam_assemble_line.
2008-02-18 Dmitry V. Levin <ldv@altlinux.org>
+ * libpam/pam_handlers.c (_pam_assemble_line): Fix potential
+ buffer overflow.
+ * xtests/tst-pam_assemble_line.pamd: New test for
+ _pam_assemble_line.
+ * xtests/tst-pam_assemble_line.sh: New script for
+ tst-pam_assemble_line.
+ * xtests/Makefile.am (NOSRCTESTS): Add tst-pam_assemble_line.
+
* modules/pam_exec/pam_exec.c (call_exec): Fix asprintf return
code check.
static int _pam_assemble_line(FILE *f, char *buffer, int buf_len)
{
char *p = buffer;
+ char *endp = buffer + buf_len;
char *s, *os;
int used = 0;
D(("called."));
for (;;) {
- if (used >= buf_len) {
+ if (p >= endp) {
/* Overflow */
D(("_pam_assemble_line: overflow"));
return -1;
}
- if (fgets(p, buf_len - used, f) == NULL) {
+ if (fgets(p, endp - p, f) == NULL) {
if (used) {
/* Incomplete read */
return -1;
tst-pam_group1 tst-pam_authfail tst-pam_authsucceed
NOSRCTESTS = tst-pam_substack1 tst-pam_substack2 tst-pam_substack3 \
- tst-pam_substack4 tst-pam_substack5
+ tst-pam_substack4 tst-pam_substack5 tst-pam_assemble_line
noinst_PROGRAMS = $(XTESTS)
--- /dev/null
+#%PAM-1.0
+# Test that _pam_assemble_line() does not crash with long lines.
+# printf '%511s\\\n%511s\\\n%511s\\\n%511s\\\n'
+ \
+ \
+ \
+ \
+auth required pam_deny.so
--- /dev/null
+#!/bin/bash
+
+exec ./tst-pam_authfail tst-pam_assemble_line