diff options
-rw-r--r-- | source3/include/includes.h | 4 | ||||
-rw-r--r-- | source3/smbd/ipc.c | 10 |
2 files changed, 12 insertions, 2 deletions
diff --git a/source3/include/includes.h b/source3/include/includes.h index 35112ff70b..03c2d461e6 100644 --- a/source3/include/includes.h +++ b/source3/include/includes.h @@ -1105,6 +1105,10 @@ extern char *sys_errlist[]; #define S_ISDIR(x) ((S_IFDIR & x)!=0) #endif +#if !defined(S_ISLNK) && defined(S_IFLNK) +#define S_ISLNK(x) ((S_IFLNK & x)!=0) +#endif + #ifdef UFC_CRYPT #define crypt ufc_crypt #endif diff --git a/source3/smbd/ipc.c b/source3/smbd/ipc.c index 89dd9f511b..d6d2f289aa 100644 --- a/source3/smbd/ipc.c +++ b/source3/smbd/ipc.c @@ -982,11 +982,17 @@ static BOOL api_RNetServerEnum(int cnum, uint16 vuid, char *param, char *data, int i,missed; fstring domain; BOOL domain_request; - BOOL local_request = servertype & SV_TYPE_LOCAL_LIST_ONLY; + BOOL local_request; - if (servertype == SV_TYPE_ALL) servertype &= ~SV_TYPE_DOMAIN_ENUM; + /* If someone sets all the bits they don't really mean to set + DOMAIN_ENUM and LOCAL_LIST_ONLY, they just want all the + known servers. */ + + if (servertype == SV_TYPE_ALL) + servertype &= ~(SV_TYPE_DOMAIN_ENUM|SV_TYPE_LOCAL_LIST_ONLY); domain_request = ((servertype & SV_TYPE_DOMAIN_ENUM) != 0); + local_request = ((servertype & SV_TYPE_LOCAL_LIST_ONLY) != 0); p += 8; |