pppd: fix possible null pointer dereferencing
We shouldn't call strcmp directly on return value of crypt() because it might return NULL. Resolves: #815617
This commit is contained in:
parent
0c288beeb7
commit
f2801bcfd9
47
ppp-2.4.5-crypt.patch
Normal file
47
ppp-2.4.5-crypt.patch
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
diff -up ppp-2.4.5/pppd/auth.c.crypt ppp-2.4.5/pppd/auth.c
|
||||||
|
--- ppp-2.4.5/pppd/auth.c.crypt 2013-07-04 16:10:27.338463397 +0200
|
||||||
|
+++ ppp-2.4.5/pppd/auth.c 2013-07-04 16:15:00.204471203 +0200
|
||||||
|
@@ -1515,11 +1515,19 @@ check_passwd(unit, auser, userlen, apass
|
||||||
|
ret = UPAP_AUTHNAK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
if (secret[0] != 0 && !login_secret) {
|
||||||
|
- /* password given in pap-secrets - must match */
|
||||||
|
- if ((cryptpap || strcmp(passwd, secret) != 0)
|
||||||
|
- && strcmp(crypt(passwd, secret), secret) != 0)
|
||||||
|
- ret = UPAP_AUTHNAK;
|
||||||
|
+ /* password given in pap-secrets - must match */
|
||||||
|
+ char *cryptbuf = NULL;
|
||||||
|
+ cryptbuf = crypt(passwd, secret);
|
||||||
|
+
|
||||||
|
+ if (cryptpap) {
|
||||||
|
+ if ((cryptbuf == NULL) || (strcmp(cryptbuf, secret) != 0))
|
||||||
|
+ ret = UPAP_AUTHNAK;
|
||||||
|
+ } else {
|
||||||
|
+ if ((strcmp(passwd, secret) != 0) && (cryptbuf == NULL || strcmp(cryptbuf, secret) != 0))
|
||||||
|
+ ret = UPAP_AUTHNAK;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
diff -up ppp-2.4.5/pppd/session.c.crypt ppp-2.4.5/pppd/session.c
|
||||||
|
--- ppp-2.4.5/pppd/session.c.crypt 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/session.c 2013-07-04 16:10:27.354463397 +0200
|
||||||
|
@@ -348,9 +348,14 @@ session_start(flags, user, passwd, ttyNa
|
||||||
|
/*
|
||||||
|
* If no passwd, don't let them login if we're authenticating.
|
||||||
|
*/
|
||||||
|
- if (pw->pw_passwd == NULL || strlen(pw->pw_passwd) < 2
|
||||||
|
- || strcmp(crypt(passwd, pw->pw_passwd), pw->pw_passwd) != 0)
|
||||||
|
+ if (pw->pw_passwd == NULL || strlen(pw->pw_passwd) < 2) {
|
||||||
|
return SESSION_FAILED;
|
||||||
|
+ } else {
|
||||||
|
+ char *cryptbuf = NULL;
|
||||||
|
+ cryptbuf = crypt(passwd, pw->pw_passwd);
|
||||||
|
+ if ((cryptbuf == NULL) || (strcmp(cryptbuf, pw->pw_passwd) != 0))
|
||||||
|
+ return SESSION_FAILED;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* #ifdef USE_PAM */
|
7
ppp.spec
7
ppp.spec
@ -1,7 +1,7 @@
|
|||||||
Summary: The Point-to-Point Protocol daemon
|
Summary: The Point-to-Point Protocol daemon
|
||||||
Name: ppp
|
Name: ppp
|
||||||
Version: 2.4.5
|
Version: 2.4.5
|
||||||
Release: 30%{?dist}
|
Release: 31%{?dist}
|
||||||
License: BSD and LGPLv2+ and GPLv2+ and Public Domain
|
License: BSD and LGPLv2+ and GPLv2+ and Public Domain
|
||||||
Group: System Environment/Daemons
|
Group: System Environment/Daemons
|
||||||
URL: http://www.samba.org/ppp
|
URL: http://www.samba.org/ppp
|
||||||
@ -34,6 +34,7 @@ Patch30: ppp-2.4.5-eth.patch
|
|||||||
Patch31: ppp-2.4.5-lock.patch
|
Patch31: ppp-2.4.5-lock.patch
|
||||||
Patch32: ppp-2.4.5-l2tp-multilink.patch
|
Patch32: ppp-2.4.5-l2tp-multilink.patch
|
||||||
Patch33: ppp-2.4.5-radius-config.patch
|
Patch33: ppp-2.4.5-radius-config.patch
|
||||||
|
Patch34: ppp-2.4.5-crypt.patch
|
||||||
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
BuildRequires: pam-devel, libpcap-devel, openssl-devel
|
BuildRequires: pam-devel, libpcap-devel, openssl-devel
|
||||||
@ -86,6 +87,7 @@ This package contains the header files for building plugins for ppp.
|
|||||||
%patch31 -p1 -b .lock
|
%patch31 -p1 -b .lock
|
||||||
%patch32 -p1 -b .l2tp-multilink
|
%patch32 -p1 -b .l2tp-multilink
|
||||||
%patch33 -p1 -b .radius
|
%patch33 -p1 -b .radius
|
||||||
|
%patch34 -p1 -b .crypt
|
||||||
|
|
||||||
rm -f scripts/*.local
|
rm -f scripts/*.local
|
||||||
rm -f scripts/*.change_resolv_conf
|
rm -f scripts/*.change_resolv_conf
|
||||||
@ -163,6 +165,9 @@ getent group dip >/dev/null 2>&1 || groupadd -r -g 40 dip >/dev/null 2>&1 || :
|
|||||||
%doc PLUGINS
|
%doc PLUGINS
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jul 04 2013 Michal Sekletar <msekleta@redhat.com> - 2.4.5-31
|
||||||
|
- fix possible NULL pointer dereferencing
|
||||||
|
|
||||||
* Wed May 29 2013 Michal Sekletar <msekleta@redhat.com> - 2.4.5-30
|
* Wed May 29 2013 Michal Sekletar <msekleta@redhat.com> - 2.4.5-30
|
||||||
- make radius plugin config parser less strict
|
- make radius plugin config parser less strict
|
||||||
- resolves : #906913
|
- resolves : #906913
|
||||||
|
Loading…
Reference in New Issue
Block a user