diff options
-rw-r--r-- | nsswitch/libwbclient/wbc_idmap.c | 14 | ||||
-rw-r--r-- | nsswitch/libwbclient/wbc_pwd.c | 7 | ||||
-rw-r--r-- | nsswitch/libwbclient/wbc_sid.c | 45 |
3 files changed, 11 insertions, 55 deletions
diff --git a/nsswitch/libwbclient/wbc_idmap.c b/nsswitch/libwbclient/wbc_idmap.c index ab8de9f973..a77e7c09d4 100644 --- a/nsswitch/libwbclient/wbc_idmap.c +++ b/nsswitch/libwbclient/wbc_idmap.c @@ -29,7 +29,6 @@ wbcErr wbcSidToUid(const struct wbcDomainSid *sid, uid_t *puid) { struct winbindd_request request; struct winbindd_response response; - char *sid_string = NULL; wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE; if (!sid || !puid) { @@ -42,11 +41,7 @@ wbcErr wbcSidToUid(const struct wbcDomainSid *sid, uid_t *puid) ZERO_STRUCT(request); ZERO_STRUCT(response); - wbc_status = wbcSidToString(sid, &sid_string); - BAIL_ON_WBC_ERROR(wbc_status); - - strncpy(request.data.sid, sid_string, sizeof(request.data.sid)-1); - wbcFreeMemory(sid_string); + wbcSidToStringBuf(sid, request.data.sid, sizeof(request.data.sid)); /* Make request */ @@ -124,7 +119,6 @@ wbcErr wbcSidToGid(const struct wbcDomainSid *sid, gid_t *pgid) struct winbindd_request request; struct winbindd_response response; wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE; - char *sid_string = NULL; if (!sid || !pgid) { wbc_status = WBC_ERR_INVALID_PARAM; @@ -136,11 +130,7 @@ wbcErr wbcSidToGid(const struct wbcDomainSid *sid, gid_t *pgid) ZERO_STRUCT(request); ZERO_STRUCT(response); - wbc_status = wbcSidToString(sid, &sid_string); - BAIL_ON_WBC_ERROR(wbc_status); - - strncpy(request.data.sid, sid_string, sizeof(request.data.sid)-1); - wbcFreeMemory(sid_string); + wbcSidToStringBuf(sid, request.data.sid, sizeof(request.data.sid)); /* Make request */ diff --git a/nsswitch/libwbclient/wbc_pwd.c b/nsswitch/libwbclient/wbc_pwd.c index abd03d7455..6df694dcac 100644 --- a/nsswitch/libwbclient/wbc_pwd.c +++ b/nsswitch/libwbclient/wbc_pwd.c @@ -236,22 +236,18 @@ wbcErr wbcGetpwsid(struct wbcDomainSid *sid, struct passwd **pwd) wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE; struct winbindd_request request; struct winbindd_response response; - char * sid_string = NULL; if (!pwd) { wbc_status = WBC_ERR_INVALID_PARAM; BAIL_ON_WBC_ERROR(wbc_status); } - wbc_status = wbcSidToString(sid, &sid_string); - BAIL_ON_WBC_ERROR(wbc_status); - /* Initialize request */ ZERO_STRUCT(request); ZERO_STRUCT(response); - strncpy(request.data.sid, sid_string, sizeof(request.data.sid)); + wbcSidToStringBuf(sid, request.data.sid, sizeof(request.data.sid)); wbc_status = wbcRequestResponse(WINBINDD_GETPWSID, &request, @@ -262,7 +258,6 @@ wbcErr wbcGetpwsid(struct wbcDomainSid *sid, struct passwd **pwd) BAIL_ON_PTR_ERROR(*pwd, wbc_status); done: - wbcFreeMemory(sid_string); return wbc_status; } diff --git a/nsswitch/libwbclient/wbc_sid.c b/nsswitch/libwbclient/wbc_sid.c index 6ea9e0a668..e94d874a48 100644 --- a/nsswitch/libwbclient/wbc_sid.c +++ b/nsswitch/libwbclient/wbc_sid.c @@ -225,7 +225,6 @@ wbcErr wbcLookupSid(const struct wbcDomainSid *sid, struct winbindd_request request; struct winbindd_response response; wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE; - char *sid_string = NULL; char *domain, *name; if (!sid) { @@ -237,15 +236,7 @@ wbcErr wbcLookupSid(const struct wbcDomainSid *sid, ZERO_STRUCT(request); ZERO_STRUCT(response); - /* dst is already null terminated from the memset above */ - - wbc_status = wbcSidToString(sid, &sid_string); - if (!WBC_ERROR_IS_OK(wbc_status)) { - return wbc_status; - } - - strncpy(request.data.sid, sid_string, sizeof(request.data.sid)-1); - wbcFreeMemory(sid_string); + wbcSidToStringBuf(sid, request.data.sid, sizeof(request.data.sid)); /* Make request */ @@ -301,7 +292,6 @@ wbcErr wbcLookupRids(struct wbcDomainSid *dom_sid, char *p; struct winbindd_request request; struct winbindd_response response; - char *sid_string = NULL; char *domain_name = NULL; const char **names = NULL; enum wbcSidType *types = NULL; @@ -317,11 +307,7 @@ wbcErr wbcLookupRids(struct wbcDomainSid *dom_sid, BAIL_ON_WBC_ERROR(wbc_status); } - wbc_status = wbcSidToString(dom_sid, &sid_string); - BAIL_ON_WBC_ERROR(wbc_status); - - strncpy(request.data.sid, sid_string, sizeof(request.data.sid)-1); - wbcFreeMemory(sid_string); + wbcSidToStringBuf(dom_sid, request.data.sid, sizeof(request.data.sid)); /* Even if all the Rids were of maximum 32bit values, we would only have 11 bytes per rid in the final array @@ -426,7 +412,6 @@ wbcErr wbcLookupUserSids(const struct wbcDomainSid *user_sid, const char *s; struct winbindd_request request; struct winbindd_response response; - char *sid_string = NULL; struct wbcDomainSid *sids = NULL; wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE; int cmd; @@ -441,11 +426,7 @@ wbcErr wbcLookupUserSids(const struct wbcDomainSid *user_sid, BAIL_ON_WBC_ERROR(wbc_status); } - wbc_status = wbcSidToString(user_sid, &sid_string); - BAIL_ON_WBC_ERROR(wbc_status); - - strncpy(request.data.sid, sid_string, sizeof(request.data.sid)-1); - wbcFreeMemory(sid_string); + wbcSidToStringBuf(user_sid, request.data.sid, sizeof(request.data.sid)); if (domain_groups_only) { cmd = WINBINDD_GETUSERDOMGROUPS; @@ -516,8 +497,6 @@ wbcErr wbcGetSidAliases(const struct wbcDomainSid *dom_sid, const char *s; struct winbindd_request request; struct winbindd_response response; - char *sid_string = NULL; - ssize_t sid_len; ssize_t extra_data_len = 0; char * extra_data = NULL; ssize_t buflen = 0; @@ -535,12 +514,7 @@ wbcErr wbcGetSidAliases(const struct wbcDomainSid *dom_sid, goto done; } - wbc_status = wbcSidToString(dom_sid, &sid_string); - BAIL_ON_WBC_ERROR(wbc_status); - - strncpy(request.data.sid, sid_string, sizeof(request.data.sid)-1); - wbcFreeMemory(sid_string); - sid_string = NULL; + wbcSidToStringBuf(dom_sid, request.data.sid, sizeof(request.data.sid)); /* Lets assume each sid is around 57 characters * S-1-5-21-AAAAAAAAAAA-BBBBBBBBBBB-CCCCCCCCCCC-DDDDDDDDDDD\n */ @@ -553,10 +527,10 @@ wbcErr wbcGetSidAliases(const struct wbcDomainSid *dom_sid, /* Build the sid list */ for (i=0; i<num_sids; i++) { - wbc_status = wbcSidToString(&sids[i], &sid_string); - BAIL_ON_WBC_ERROR(wbc_status); + char sid_str[WBC_SID_STRING_BUFLEN]; + size_t sid_len; - sid_len = strlen(sid_string); + sid_len = wbcSidToStringBuf(&sids[i], sid_str, sizeof(sid_str)); if (buflen < extra_data_len + sid_len + 2) { buflen *= 2; @@ -567,13 +541,11 @@ wbcErr wbcGetSidAliases(const struct wbcDomainSid *dom_sid, } } - strncpy(&extra_data[extra_data_len], sid_string, + strncpy(&extra_data[extra_data_len], sid_str, buflen - extra_data_len); extra_data_len += sid_len; extra_data[extra_data_len++] = '\n'; extra_data[extra_data_len] = '\0'; - wbcFreeMemory(sid_string); - sid_string = NULL; } extra_data_len += 1; @@ -614,7 +586,6 @@ wbcErr wbcGetSidAliases(const struct wbcDomainSid *dom_sid, wbc_status = WBC_ERR_SUCCESS; done: - wbcFreeMemory(sid_string); free(extra_data); winbindd_free_response(&response); wbcFreeMemory(rids); |