From 22c5575eb442f20230081cc06528d685397c8914 Mon Sep 17 00:00:00 2001 From: Sumit Bose Date: Fri, 29 Sep 2017 21:38:54 +0200 Subject: [PATCH 22/31] sss_client: create nss_common.h This patch makes sss_nss_getpw_readrep() and sss_nss_getgr_readrep() calls which parse SSSD's replies for user and group requests available to other components. Related to https://pagure.io/SSSD/sssd/issue/2478 Reviewed-by: Jakub Hrozek (cherry picked from commit 7449b236523409cc8766fb957d6cba051fdfb483) --- Makefile.am | 1 + src/sss_client/nss_common.h | 43 +++++++++++++++++++++++++++++++++++++++++++ src/sss_client/nss_group.c | 10 +++------- src/sss_client/nss_passwd.c | 11 +++-------- 4 files changed, 50 insertions(+), 15 deletions(-) create mode 100644 src/sss_client/nss_common.h diff --git a/Makefile.am b/Makefile.am index 5483375167d99568e8313c9a0488900419be6ec3..dc2f4b1857ce5bd376544488348731be29b6b293 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3623,6 +3623,7 @@ libnss_sss_la_SOURCES = \ src/sss_client/nss_services.c \ src/sss_client/sss_cli.h \ src/sss_client/nss_compat.h \ + src/sss_client/nss_common.h \ src/sss_client/nss_mc_common.c \ src/util/io.c \ src/util/murmurhash3.c \ diff --git a/src/sss_client/nss_common.h b/src/sss_client/nss_common.h new file mode 100644 index 0000000000000000000000000000000000000000..e83b4f95a3136b5aa711194a4d37389eebfb607a --- /dev/null +++ b/src/sss_client/nss_common.h @@ -0,0 +1,43 @@ +/* + SSSD + + Common routines for classical and enhanced NSS interface + + Authors: + Sumit Bose + + Copyright (C) Red Hat, Inc 2007 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + + + +struct sss_nss_pw_rep { + struct passwd *result; + char *buffer; + size_t buflen; +}; + +int sss_nss_getpw_readrep(struct sss_nss_pw_rep *pr, + uint8_t *buf, size_t *len); + +struct sss_nss_gr_rep { + struct group *result; + char *buffer; + size_t buflen; +}; + +int sss_nss_getgr_readrep(struct sss_nss_gr_rep *pr, + uint8_t *buf, size_t *len); diff --git a/src/sss_client/nss_group.c b/src/sss_client/nss_group.c index 0e686af43aeb84a5938315e3922e9fcf2fef4e83..42fba6242d23fc1d52cfd7be10cf10383010f091 100644 --- a/src/sss_client/nss_group.c +++ b/src/sss_client/nss_group.c @@ -29,6 +29,7 @@ #include #include "sss_cli.h" #include "nss_mc.h" +#include "nss_common.h" static struct sss_nss_getgrent_data { size_t len; @@ -190,14 +191,9 @@ done: * * FIXME: do we need to pad so that each result is 32 bit aligned ? */ -struct sss_nss_gr_rep { - struct group *result; - char *buffer; - size_t buflen; -}; -static int sss_nss_getgr_readrep(struct sss_nss_gr_rep *pr, - uint8_t *buf, size_t *len) +int sss_nss_getgr_readrep(struct sss_nss_gr_rep *pr, + uint8_t *buf, size_t *len) { errno_t ret; size_t i, l, slen, ptmem, pad, dlen, glen; diff --git a/src/sss_client/nss_passwd.c b/src/sss_client/nss_passwd.c index c43f9bc50f43599b541e97f5a5aa60de036a5cdf..61e2a567e684fbc7664b5d425e81cfa28a98e845 100644 --- a/src/sss_client/nss_passwd.c +++ b/src/sss_client/nss_passwd.c @@ -28,6 +28,7 @@ #include #include "sss_cli.h" #include "nss_mc.h" +#include "nss_common.h" static struct sss_nss_getpwent_data { size_t len; @@ -63,14 +64,8 @@ static void sss_nss_getpwent_data_clean(void) { * 8-X: sequence of 5, 0 terminated, strings (name, passwd, gecos, dir, shell) */ -struct sss_nss_pw_rep { - struct passwd *result; - char *buffer; - size_t buflen; -}; - -static int sss_nss_getpw_readrep(struct sss_nss_pw_rep *pr, - uint8_t *buf, size_t *len) +int sss_nss_getpw_readrep(struct sss_nss_pw_rep *pr, + uint8_t *buf, size_t *len) { errno_t ret; size_t i, slen, dlen; -- 2.13.6