From 71bcdde36bcfd8cb797777062208a85bf6337dec Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik Date: Tue, 27 May 2014 13:55:26 +0200 Subject: sss_autofs: Check return value of autofs make request The return value of function sss_autofs_make_request was not checked. (returned value was SSS_STATUS_UNAVAIL) Unfotunatelly, errnop was zero; buffer "repbuf" was not initialised and automount crashed in sss_autofs plugin. Resolves: https://fedorahosted.org/sssd/ticket/2288 Reviewed-by: Jakub Hrozek --- src/sss_client/autofs/sss_autofs.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/sss_client/autofs/sss_autofs.c b/src/sss_client/autofs/sss_autofs.c index 49e130282..787b9f2b5 100644 --- a/src/sss_client/autofs/sss_autofs.c +++ b/src/sss_client/autofs/sss_autofs.c @@ -89,9 +89,9 @@ _sss_setautomntent(const char *mapname, void **context) rd.data = name; rd.len = name_len + 1; - sss_autofs_make_request(SSS_AUTOFS_SETAUTOMNTENT, &rd, - &repbuf, &replen, &errnop); - if (errnop != 0) { + ret = sss_autofs_make_request(SSS_AUTOFS_SETAUTOMNTENT, &rd, + &repbuf, &replen, &errnop); + if (ret != SSS_STATUS_SUCCESS) { free(name); ret = errnop; goto out; @@ -306,10 +306,10 @@ _sss_getautomntent_r(char **key, char **value, void *context) rd.data = data; rd.len = data_len; - sss_autofs_make_request(SSS_AUTOFS_GETAUTOMNTENT, &rd, - &repbuf, &replen, &errnop); + ret = sss_autofs_make_request(SSS_AUTOFS_GETAUTOMNTENT, &rd, + &repbuf, &replen, &errnop); free(data); - if (errnop != 0) { + if (ret != SSS_STATUS_SUCCESS) { ret = errnop; goto out; } @@ -404,10 +404,10 @@ _sss_getautomntbyname_r(const char *key, char **value, void *context) rd.data = data; rd.len = data_len; - sss_autofs_make_request(SSS_AUTOFS_GETAUTOMNTBYNAME, &rd, - &repbuf, &replen, &errnop); + ret = sss_autofs_make_request(SSS_AUTOFS_GETAUTOMNTBYNAME, &rd, + &repbuf, &replen, &errnop); free(data); - if (errnop != 0) { + if (ret != SSS_STATUS_SUCCESS) { ret = errnop; goto out; } @@ -462,9 +462,9 @@ _sss_endautomntent(void **context) free(fctx->mapname); free(fctx); - sss_autofs_make_request(SSS_AUTOFS_ENDAUTOMNTENT, - NULL, NULL, NULL, &errnop); - if (errnop != 0) { + ret = sss_autofs_make_request(SSS_AUTOFS_ENDAUTOMNTENT, + NULL, NULL, NULL, &errnop); + if (ret != SSS_STATUS_SUCCESS) { ret = errnop; goto out; } -- cgit