NSS_STATUS _nss_winbind_gidtosid(gid_t gid, char **sid, char *buffer,
size_t buflen, int *errnop);
+/*************************************************************************
+ ************************************************************************/
+
+#ifdef DEBUG_NSS
+static const char *nss_err_str(NSS_STATUS ret)
+{
+ switch (ret) {
+ case NSS_STATUS_TRYAGAIN:
+ return "NSS_STATUS_TRYAGAIN";
+ case NSS_STATUS_SUCCESS:
+ return "NSS_STATUS_SUCCESS";
+ case NSS_STATUS_NOTFOUND:
+ return "NSS_STATUS_NOTFOUND";
+ case NSS_STATUS_UNAVAIL:
+ return "NSS_STATUS_UNAVAIL";
+#ifdef NSS_STATUS_RETURN
+ case NSS_STATUS_RETURN:
+ return "NSS_STATUS_RETURN";
+#endif
+ default:
+ return "UNKNOWN RETURN CODE!!!!!!!";
+ }
+}
+#endif
+
/* Prototypes from wb_common.c */
/* Allocate some space from the nss static buffer. The buffer and buflen
char **pp_buff,
const char *sep)
{
- char *s;
- char *saved_s;
+ const char *s;
+ const char *saved_s;
char *pbuf;
bool quoted;
size_t len=1;
return(false);
}
- s = (char *)*ptr;
+ s = *ptr;
/* default to simple separators */
if (!sep) {
Return NSS_STATUS_TRYAGAIN if we run out of memory. */
static NSS_STATUS fill_grent(struct group *result, struct winbindd_gr *gr,
- char *gr_mem, char **buffer, size_t *buflen)
+ const char *gr_mem, char **buffer, size_t *buflen)
{
char *name;
int i;
/* Group membership */
- if ((gr->num_gr_mem < 0) || !gr_mem) {
+ if (!gr_mem) {
gr->num_gr_mem = 0;
}
continue;
}
+ /* Skip groups without a mapping */
+ if (gid_list[i] == (uid_t)-1) {
+ continue;
+ }
+
/* Filled buffer ? If so, resize. */
if (*start == *size) {