Changeset 803 in openpam for trunk/lib


Ignore:
Timestamp:
Sep 9, 2014, 9:07:51 AM (6 years ago)
Author:
Dag-Erling Smørgrav
Message:

Introduce strlset(), a memset() variant for strings where the actual
size of the buffer is not necessarily known, and which can replace the
"memset(str, 0, strlen(str))" idiom. Use it to clear buffers which may
have contained authentication tokens.

Location:
trunk/lib/libpam
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/libpam/Makefile.am

    r660 r803  
    1919        openpam_strlcmp.h \
    2020        openpam_strlcpy.h \
     21        openpam_strlset.h \
    2122        openpam_vasprintf.h
    2223
     
    4546        openpam_set_feature.c \
    4647        openpam_static.c \
     48        openpam_straddch.c \
    4749        openpam_strlcat.c \
    4850        openpam_strlcpy.c \
    49         openpam_straddch.c \
     51        openpam_strlset.c \
    5052        openpam_subst.c \
    5153        openpam_vasprintf.c \
  • trunk/lib/libpam/openpam_ttyconv.c

    r742 r803  
    5656
    5757#include "openpam_impl.h"
     58#include "openpam_strlset.h"
    5859
    5960int openpam_ttyconv_timeout = 0;
     
    367368        for (i = 0; i < n; ++i) {
    368369                if (aresp[i].resp != NULL) {
    369                         memset(aresp[i].resp, 0, strlen(aresp[i].resp));
     370                        strlset(aresp[i].resp, 0, PAM_MAX_RESP_SIZE);
    370371                        FREE(aresp[i].resp);
    371372                }
  • trunk/lib/libpam/pam_get_authtok.c

    r670 r803  
    4949
    5050#include "openpam_impl.h"
     51#include "openpam_strlset.h"
    5152
    5253static const char authtok_prompt[] = "Password:";
     
    141142                r = pam_prompt(pamh, style, &resp2, "Retype %s", prompt);
    142143                if (r != PAM_SUCCESS) {
     144                        strlset(resp, 0, PAM_MAX_RESP_SIZE);
    143145                        FREE(resp);
    144146                        RETURNC(r);
    145147                }
    146                 if (strcmp(resp, resp2) != 0)
     148                if (strcmp(resp, resp2) != 0) {
     149                        strlset(resp, 0, PAM_MAX_RESP_SIZE);
    147150                        FREE(resp);
     151                }
     152                strlset(resp2, 0, PAM_MAX_RESP_SIZE);
    148153                FREE(resp2);
    149154        }
     
    151156                RETURNC(PAM_TRY_AGAIN);
    152157        r = pam_set_item(pamh, item, resp);
     158        strlset(resp, 0, PAM_MAX_RESP_SIZE);
    153159        FREE(resp);
    154160        if (r != PAM_SUCCESS)
Note: See TracChangeset for help on using the changeset viewer.