diff options
author | Andreas Schneider <asn@samba.org> | 2020-03-24 07:05:28 +0100 |
---|---|---|
committer | Andreas Schneider <asn@samba.org> | 2020-03-24 08:38:02 +0100 |
commit | 1f224299e46a44473c42eab06a8fcc369fb3c8f2 (patch) | |
tree | 6822bb3ffa86cf732541fab07d038fa023c1b6ab | |
parent | 045210208d5dfc8b4e41735eeb73165d4a37990e (diff) | |
download | pam_wrapper-1f224299e46a44473c42eab06a8fcc369fb3c8f2.tar.gz pam_wrapper-1f224299e46a44473c42eab06a8fcc369fb3c8f2.tar.xz pam_wrapper-1f224299e46a44473c42eab06a8fcc369fb3c8f2.zip |
Revert "pwrap: Fix pso_copy to work with libpam.so.0.84.2"
This reverts commit 047e9fb616d21e202add9f16347cea2084444104.
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
-rw-r--r-- | src/pam_wrapper.c | 31 |
1 files changed, 4 insertions, 27 deletions
diff --git a/src/pam_wrapper.c b/src/pam_wrapper.c index 3e5ebbe..357e09c 100644 --- a/src/pam_wrapper.c +++ b/src/pam_wrapper.c @@ -937,14 +937,13 @@ static void pwrap_init(void) static int pso_copy(const char *src, const char *dst, const char *pdir, mode_t mode) { -#define PSO_COPY_READ_SIZE 16 +#define PSO_COPY_READ_SIZE 9 int srcfd = -1; int dstfd = -1; int rc = -1; ssize_t bread, bwritten; struct stat sb; char buf[PSO_COPY_READ_SIZE + 1]; - size_t pso_copy_read_size = PSO_COPY_READ_SIZE; int cmp; size_t to_read; bool found_slash; @@ -991,35 +990,13 @@ static int pso_copy(const char *src, const char *dst, const char *pdir, mode_t m to_read = 1; if (!found_slash && buf[0] == '/') { found_slash = true; - to_read = pso_copy_read_size; + to_read = PSO_COPY_READ_SIZE; } if (found_slash && bread == PSO_COPY_READ_SIZE) { - cmp = memcmp(buf, "usr/etc/pam.d/%s", 16); + cmp = memcmp(buf, "etc/pam.d", 9); if (cmp == 0) { - char tmp[16] = {0}; - - snprintf(tmp, sizeof(tmp), "%s/%%s", pdir + 1); - - memcpy(buf, tmp, 12); - memset(&buf[12], '\0', 4); - - /* - * If we found this string, we need to reduce - * the read size to not miss, the next one. - */ - pso_copy_read_size = 13; - } else { - cmp = memcmp(buf, "usr/etc/pam.d", 13); - if (cmp == 0) { - memcpy(buf, pdir + 1, 9); - memset(&buf[9], '\0', 4); - } else { - cmp = memcmp(buf, "etc/pam.d", 9); - if (cmp == 0) { - memcpy(buf, pdir + 1, 9); - } - } + memcpy(buf, pdir + 1, 9); } found_slash = false; } |