]> granicus.if.org Git - linux-pam/commitdiff
Relevant BUGIDs: none
authorSteve Langasek <vorlon@debian.org>
Fri, 30 Sep 2005 09:09:51 +0000 (09:09 +0000)
committerSteve Langasek <vorlon@debian.org>
Fri, 30 Sep 2005 09:09:51 +0000 (09:09 +0000)
Purpose of commit: bugfix

Commit summary:
---------------

Fix memory leak due to gratuitous use of strdup().

ChangeLog
modules/pam_userdb/pam_userdb.c

index e5cda09d8967b60615d80a543d66d1b3946a1989..20850d4d6dd24d616394a953b11e452e19262b57 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-09-30  Steve Langasek  <vorlon@debian.org>
+
+       * modules/pam_userdb/pam_userdb.c: Fix memory leak due to
+       gratuitous use of strdup().
+
 2005-09-27  Thorsten Kukuk  <kukuk@thkukuk.de>
 
         * release 0.99.1.0
index f584a438e98e6bb252519ab77b7faf03fc6cbe1a..662c7ac37a121ae990ecc6f99f2495a743d11291 100644 (file)
@@ -113,14 +113,14 @@ _pam_parse (pam_handle_t *pamh, int argc, const char **argv,
        ctrl |= PAM_TRY_FPASS_ARG;
       else if (!strncasecmp(*argv,"db=", 3))
        {
-         *database = strdup((*argv) + 3);
+         *database = (*argv) + 3;
          if ((*database == NULL) || (strlen (*database) == 0))
            pam_syslog(pamh, LOG_ERR,
                       "could not parse argument \"%s\"", *argv);
        }
       else if (!strncasecmp(*argv,"crypt=", 6))
        {
-         *cryptmode = strdup((*argv) + 6);
+         *cryptmode = (*argv) + 6;
          if ((*cryptmode == NULL) || (strlen (*cryptmode) == 0))
            pam_syslog(pamh, LOG_ERR,
                       "could not parse argument \"%s\"", *argv);
@@ -239,13 +239,13 @@ user_lookup (pam_handle_t *pamh, const char *database, const char *cryptmode,
           * default to plaintext password storage
           */
 
-       if (strlen(pass) != (size_t)data.dsize) {
-         compare = 1; /* wrong password len -> wrong password */
-       } else if (ctrl & PAM_ICASE_ARG) {
+         if (strlen(pass) != (size_t)data.dsize) {
+           compare = 1; /* wrong password len -> wrong password */
+         } else if (ctrl & PAM_ICASE_ARG) {
            compare = strncasecmp(data.dptr, pass, data.dsize);
-       } else {
+         } else {
            compare = strncmp(data.dptr, pass, data.dsize);
-       }
+         }
 
          if (cryptmode && strncasecmp(cryptmode, "none", 4) 
                && (ctrl & PAM_DEBUG_ARG)) {