BOOL translation = False;
-extern int cnum;
-extern int mid;
-extern int pid;
-extern int tid;
-extern int gid;
-extern int uid;
+extern uint16 cnum;
+extern uint16 mid;
+extern uint16 pid;
+extern uint16 vuid;
extern BOOL have_ip;
extern int max_xmit;
/****************************************************************************
do a directory listing, calling fn on each file found
****************************************************************************/
-void do_dir(char *inbuf,char *outbuf,char *Mask,int attribute,void (*fn)(file_info *),BOOL recurse_dir, BOOL dirstoo)
+void do_dir(char *inbuf,char *outbuf,char *mask,int attribute,void (*fn)(file_info *),BOOL recurse_dir, BOOL dirstoo)
{
- DEBUG(5,("do_dir(%s,%x,%s)\n",Mask,attribute,BOOLSTR(recurse_dir)));
+ dos_format(mask);
+ DEBUG(5,("do_dir(%s,%x,%s)\n",mask,attribute,BOOLSTR(recurse_dir)));
if (Protocol >= PROTOCOL_LANMAN2)
{
- if (do_long_dir(inbuf,outbuf,Mask,attribute,fn,recurse_dir,dirstoo) > 0)
+ if (do_long_dir(inbuf,outbuf,mask,attribute,fn,recurse_dir,dirstoo) > 0)
return;
}
- expand_mask(Mask,False);
- do_short_dir(inbuf,outbuf,Mask,attribute,fn,recurse_dir,dirstoo);
+ expand_mask(mask,False);
+ do_short_dir(inbuf,outbuf,mask,attribute,fn,recurse_dir,dirstoo);
return;
}
if(mask[strlen(mask)-1]!='\\')
pstrcat(mask,"\\");
- if (next_token(NULL,buf,NULL,sizeof(buf)))
- {
- if (*p == '\\')
- pstrcpy(mask,p);
- else
- pstrcat(mask,p);
- }
+ if (next_token(NULL,buf,NULL,sizeof(buf))) {
+ dos_format(p);
+ if (*p == '\\')
+ pstrcpy(mask,p);
+ else
+ pstrcat(mask,p);
+ }
else {
pstrcat(mask,"*");
}
pstrcat(mask,"\\");
if (next_token(NULL,buf,NULL,sizeof(buf)))
- {
- if (*p == '\\')
- pstrcpy(mask,p);
- else
- pstrcat(mask,p);
- }
+ {
+ dos_format(p);
+ if (*p == '\\')
+ pstrcpy(mask,p);
+ else
+ pstrcat(mask,p);
+ }
else {
pstrcat(mask,"*");
}
outbuf = (char *)malloc(BUFFER_SIZE + SAFETY_MARGIN);
if (!inbuf || !outbuf)
- {
- DEBUG(0,("out of memory\n"));
- return;
- }
+ {
+ DEBUG(0,("out of memory\n"));
+ return;
+ }
bzero(outbuf,smb_size);
set_message(outbuf,15,1 + strlen(rname),True);
pstrcpy(workgroup,lp_workgroup());
load_interfaces();
- pid = getpid();
- uid = getuid();
- gid = getgid();
+ pid = (uint16)getpid();
+ vuid = (uint16)getuid();
mid = pid + 100;
myumask = umask(0);
umask(myumask);
extern int DEBUGLEVEL;
-int cnum = 0;
-int pid = 0;
-int gid = 0;
-int uid = 0;
-int mid = 0;
+uint16 cnum = 0;
+uint16 pid = 0;
+uint16 vuid = 0;
+uint16 mid = 0;
int max_xmit = BUFFER_SIZE;
void cli_setup_pkt(char *outbuf)
{
SSVAL(outbuf,smb_pid,pid);
- SSVAL(outbuf,smb_uid,uid);
+ SSVAL(outbuf,smb_uid,vuid);
SSVAL(outbuf,smb_mid,mid);
if (Protocol > PROTOCOL_COREPLUS)
{
}
/* use the returned uid from now on */
- if (SVAL(inbuf,smb_uid) != uid)
+ if (SVAL(inbuf,smb_uid) != vuid)
DEBUG(3,("Server gave us a UID of %d. We gave %d\n",
- SVAL(inbuf,smb_uid),uid));
- opt.server_uid = uid = SVAL(inbuf,smb_uid);
+ SVAL(inbuf,smb_uid),(int)vuid));
+ opt.server_vuid = vuid = SVAL(inbuf,smb_uid);
}
if (opt.sec_mode & 1) {
BOOL translation = False;
-extern int cnum;
-extern int mid;
-extern int pid;
-extern int tid;
-extern int gid;
-extern int uid;
+extern uint16 cnum;
+extern uint16 mid;
+extern uint16 pid;
+extern uint16 vuid;
extern BOOL have_ip;
extern int max_xmit;
/* clitar bits end */
-int myumask = 0755;
+mode_t myumask = 0755;
extern pstring scope;
TimeInit();
charset_initialise();
- pid = getpid();
- uid = getuid();
- gid = getgid();
+ pid = (uint16)getpid();
+ uid = (uint16)getuid();
mid = pid + 100;
myumask = umask(0);
umask(myumask);
struct cli_state {
int fd;
- int cnum;
- int pid;
- int mid;
- int uid;
+ uint16 cnum;
+ uint16 pid;
+ uint16 mid;
+ uint16 vuid;
int protocol;
int sec_mode;
int rap_error;
struct pipes_struct *next, *prev;
int pnum;
connection_struct *conn;
- int uid;
+ uint16 vuid;
BOOL open; /* open connection */
uint16 device_state;
fstring name;
{
char *name;
uint8 opnum;
- void (*fn) (int uid, prs_struct*, prs_struct*);
+ void (*fn) (uint16 vuid, prs_struct*, prs_struct*);
};
struct mem_desc
/*The following definitions come from client/client.c */
-void do_dir(char *inbuf,char *outbuf,char *Mask,int attribute,void (*fn)(file_info *),BOOL recurse_dir, BOOL dirstoo);
+void do_dir(char *inbuf,char *outbuf,char *mask,int attribute,void (*fn)(file_info *),BOOL recurse_dir, BOOL dirstoo);
char *complete_cmd_null(char *text, int state);
void complete_process_file(file_info *f);
char *complete_remote_file(char *text, int state);
int dos_rename(char *from, char *to);
int dos_chmod(char *fname,mode_t mode);
char *dos_getwd(char *s);
-int sys_chown(char *fname,int uid,int gid);
+int sys_chown(char *fname,uid_t uid,gid_t gid);
int sys_chroot(char *dname);
struct hostent *sys_gethostbyname(char *name);
BOOL set_process_capability( uint32 cap_flag, BOOL enable );
BOOL set_inherited_process_capability( uint32 cap_flag, BOOL enable );
long sys_random(void);
void sys_srandom(unsigned int seed);
+int sys_getgroups(int setlen, gid_t *gidset);
/*The following definitions come from lib/time.c */
char **toktocliplist(int *ctok, char *sep);
void set_socket_options(int fd, char *options);
void close_sockets(void );
-BOOL in_group(gid_t group, int current_gid, int ngroups, GID_T *groups);
+BOOL in_group(gid_t group, gid_t current_gid, int ngroups, gid_t *groups);
char *StrCpy(char *dest,char *src);
char *StrnCpy(char *dest,char *src,int n);
void putip(void *dest,void *src);
int PutUniCode(char *dst,char *src);
struct hostent *Get_Hostbyname(char *name);
BOOL process_exists(int pid);
-char *uidtoname(int uid);
-char *gidtoname(int gid);
+char *uidtoname(uid_t uid);
+char *gidtoname(gid_t gid);
void smb_panic(char *why);
char *readdirname(void *p);
BOOL is_in_path(char *name, name_compare_entry *namelist);
void cli_shutdown(struct cli_state *cli);
void cli_error(struct cli_state *cli, int *eclass, int *num);
void cli_sockopt(struct cli_state *cli, char *options);
-int cli_setpid(struct cli_state *cli, int pid);
+uint16 cli_setpid(struct cli_state *cli, uint16 pid);
BOOL cli_reestablish_connection(struct cli_state *cli);
BOOL cli_establish_connection(struct cli_state *cli,
char *dest_host, struct in_addr *dest_ip,
void SMBencrypt(uchar *passwd, uchar *c8, uchar *p24);
void E_md4hash(uchar *passwd, uchar *p16);
void nt_lm_owf_gen(char *pwd, uchar nt_p16[16], uchar p16[16]);
-void SMBOWFencrypt(uchar passwd[16], char *c8, uchar p24[24]);
+void SMBOWFencrypt(uchar passwd[16], uchar *c8, uchar p24[24]);
void SMBNTencrypt(uchar *passwd, uchar *c8, uchar *p24);
/*The following definitions come from libsmb/smberr.c */
user_struct *get_valid_user_struct(uint16 vuid);
void invalidate_vuid(uint16 vuid);
char *validated_username(uint16 vuid);
-int setup_groups(char *user, int uid, int gid, int *p_ngroups, GID_T **p_groups);
-uint16 register_vuid(int uid,int gid, char *unix_name, char *requested_name, BOOL guest);
+int setup_groups(char *user, uid_t uid, gid_t gid, int *p_ngroups, gid_t **p_groups);
+uint16 register_vuid(uid_t uid,gid_t gid, char *unix_name, char *requested_name, BOOL guest);
void add_session_user(char *user);
BOOL smb_password_check(char *password, unsigned char *part_passwd, unsigned char *c8);
BOOL smb_password_ok(struct smb_passwd *smb_pass,
char *unknown_str ; /* don't know what this is, yet. */
char *munged_dial ; /* munged path name and dial-back tel number */
- int smb_userid; /* this is actually the unix uid_t */
- int smb_grpid; /* this is actually the unix gid_t */
+ uid_t smb_userid; /* this is actually the unix uid_t */
+ gid_t smb_grpid; /* this is actually the unix gid_t */
uint32 user_rid; /* Primary User ID */
uint32 group_rid; /* Primary Group ID */
struct smb_passwd
{
- int smb_userid; /* this is actually the unix uid_t */
+ uid_t smb_userid; /* this is actually the unix uid_t */
char *smb_name; /* username string */
unsigned char *smb_passwd; /* Null if no password */
struct uid_cache {
int entries;
- int list[UID_CACHE_SIZE];
+ uid_t list[UID_CACHE_SIZE];
};
typedef struct
char *connectpath;
char *origpath;
char *user; /* name of user who *opened* this connection */
- int uid; /* uid of user who *opened* this connection */
- int gid; /* gid of user who *opened* this connection */
+ uid_t uid; /* uid of user who *opened* this connection */
+ gid_t gid; /* gid of user who *opened* this connection */
uint16 vuid; /* vuid of user who *opened* this connection, or UID_FIELD_INVALID */
/* This groups info is valid for the user that *opened* the connection */
int ngroups;
- GID_T *groups;
+ gid_t *groups;
time_t lastused;
BOOL used;
struct current_user
{
connection_struct *conn;
- int vuid;
- int uid, gid;
+ uint16 vuid;
+ uid_t uid;
+ gid_t gid;
int ngroups;
- GID_T *groups;
+ gid_t *groups;
};
typedef struct files_struct
SMB_OFF_T pos;
SMB_OFF_T size;
mode_t mode;
- int vuid;
+ uint16 vuid;
char *mmap_ptr;
SMB_OFF_T mmap_size;
write_bmpx_struct *wbmpx_ptr;
typedef struct
{
- int uid; /* uid of a validated user */
- int gid; /* gid of a validated user */
+ uid_t uid; /* uid of a validated user */
+ gid_t gid; /* gid of a validated user */
fstring requested_name; /* user name from the client */
fstring name; /* unix user name of a validated user */
/* following groups stuff added by ih */
/* This groups info is needed for when we become_user() for this uid */
int n_groups;
- GID_T *groups;
+ gid_t *groups;
int n_sids;
int *sids;
int magic;
int pid;
int cnum;
- int uid;
- int gid;
+ uid_t uid;
+ gid_t gid;
char name[24];
char addr[24];
char machine[128];
int protocol;
/* Connection-Options */
uint32 max_xmit;
- uint16 server_uid;
+ uint16 server_vuid;
uint16 tid;
/* The following are LANMAN 1.0 options */
uint16 sec_mode;
/*******************************************************************
chown isn't used much but OS/2 doesn't have it
********************************************************************/
-int sys_chown(char *fname,int uid,int gid)
+int sys_chown(char *fname,uid_t uid,gid_t gid)
{
#ifndef HAVE_CHOWN
static int done;
exit(1);
#endif
}
+
+/**************************************************************************
+ Wrapper for getgroups. Deals with broken (int) case.
+****************************************************************************/
+
+int sys_getgroups(int setlen, gid_t *gidset)
+{
+#if !defined(HAVE_BROKEN_GETGROUPS)
+ return getgroups(setlen, gidset);
+#else
+
+ GID_T gid;
+ GID_T *group_list;
+ int i, ngroups;
+
+ if(setlen == 0) {
+ return getgroups(setlen, &gid);
+ }
+
+ /*
+ * Broken case. We need to allocate a
+ * GID_T array of size setlen.
+ */
+
+ if(setlen < 0) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if((group_list = (GID_T *)malloc(setlen * sizoef(GID_T))) == NULL) {
+ DEBUG(0,("sys_getgroups: Malloc fail.\n"));
+ return -1;
+ }
+
+ if((ngroups = getgroups(setlen, group_list)) < 0) {
+ int saved_errno = errno;
+ free((char *)group_list);
+ errno = saved_errno;
+ return -1;
+ }
+
+ for(i = 0; i < ngroups; i++)
+ gidset[i] = (gid_t)group_list[i];
+
+ free((char *)group_list);
+ return ngroups;
+#endif /* HAVE_BROKEN_GETGROUPS */
+}
/****************************************************************************
determine whether we are in the specified group
****************************************************************************/
-BOOL in_group(gid_t group, int current_gid, int ngroups, GID_T *groups)
+
+BOOL in_group(gid_t group, gid_t current_gid, int ngroups, gid_t *groups)
{
int i;
/****************************************************************************
check if a process exists. Does this work on all unixes?
****************************************************************************/
+
BOOL process_exists(int pid)
{
return(kill(pid,0) == 0 || errno != ESRCH);
/*******************************************************************
turn a uid into a user name
********************************************************************/
-char *uidtoname(int uid)
+
+char *uidtoname(uid_t uid)
{
static char name[40];
struct passwd *pass = getpwuid(uid);
if (pass) return(pass->pw_name);
- slprintf(name, sizeof(name) - 1, "%d",uid);
+ slprintf(name, sizeof(name) - 1, "%d",(int)uid);
return(name);
}
/*******************************************************************
turn a gid into a group name
********************************************************************/
-char *gidtoname(int gid)
+
+char *gidtoname(gid_t gid)
{
static char name[40];
struct group *grp = getgrgid(gid);
if (grp) return(grp->gr_name);
- slprintf(name,sizeof(name) - 1, "%d",gid);
+ slprintf(name,sizeof(name) - 1, "%d",(int)gid);
return(name);
}
cli->rap_error = 0;
cli->nt_error = 0;
SSVAL(cli->outbuf,smb_pid,cli->pid);
- SSVAL(cli->outbuf,smb_uid,cli->uid);
+ SSVAL(cli->outbuf,smb_uid,cli->vuid);
SSVAL(cli->outbuf,smb_mid,cli->mid);
if (cli->protocol > PROTOCOL_CORE) {
SCVAL(cli->outbuf,smb_flg,0x8);
p += 2;
pstrcpy(p,user);
strupper(p);
- p += 21; p++; p += 15; p++;
+ p += 21;
+ p++;
+ p += 15;
+ p++;
pstrcpy(p, workstation);
strupper(p);
p += 16;
}
}
- if (rparam) free(rparam);
- if (rdata) free(rdata);
+ if (rparam)
+ free(rparam);
+ if (rdata)
+ free(rdata);
return (cli->rap_error == 0);
}
}
}
- if (rparam) free(rparam);
- if (rdata) free(rdata);
+ if (rparam)
+ free(rparam);
+ if (rdata)
+ free(rdata);
return(count>0);
}
}
}
- if (rparam) free(rparam);
- if (rdata) free(rdata);
+ if (rparam)
+ free(rparam);
+ if (rdata)
+ free(rdata);
return(count > 0);
}
return False;
}
- /* use the returned uid from now on */
- cli->uid = SVAL(cli->inbuf,smb_uid);
+ /* use the returned vuid from now on */
+ cli->vuid = SVAL(cli->inbuf,smb_uid);
return True;
}
****************************************************************************/
BOOL cli_initialise(struct cli_state *cli)
{
- if (cli->initialised) cli_shutdown(cli);
+ if (cli->initialised)
+ cli_shutdown(cli);
memset(cli, 0, sizeof(*cli));
cli->fd = -1;
cli->cnum = -1;
- cli->pid = getpid();
+ cli->pid = (uint16)getpid();
cli->mid = 1;
- cli->uid = getuid();
+ cli->vuid = UID_FIELD_INVALID;
cli->protocol = PROTOCOL_NT1;
cli->timeout = 20000;
cli->bufsize = 0x10000;
cli->max_xmit = cli->bufsize - 4;
cli->outbuf = (char *)malloc(cli->bufsize);
cli->inbuf = (char *)malloc(cli->bufsize);
- if (!cli->outbuf || !cli->inbuf) return False;
+ if (!cli->outbuf || !cli->inbuf)
+ return False;
cli->initialised = 1;
return True;
}
****************************************************************************/
void cli_shutdown(struct cli_state *cli)
{
- if (cli->outbuf) free(cli->outbuf);
- if (cli->inbuf) free(cli->inbuf);
+ if (cli->outbuf)
+ free(cli->outbuf);
+ if (cli->inbuf)
+ free(cli->inbuf);
#ifdef WITH_SSL
- if (cli->fd != -1) sslutil_disconnect(cli->fd);
+ if (cli->fd != -1)
+ sslutil_disconnect(cli->fd);
#endif /* WITH_SSL */
- if (cli->fd != -1) close(cli->fd);
+ if (cli->fd != -1)
+ close(cli->fd);
memset(cli, 0, sizeof(*cli));
}
/****************************************************************************
set the PID to use for smb messages. Return the old pid.
****************************************************************************/
-int cli_setpid(struct cli_state *cli, int pid)
+uint16 cli_setpid(struct cli_state *cli, uint16 pid)
{
- int ret = cli->pid;
+ uint16 ret = cli->pid;
cli->pid = pid;
return ret;
}
if (!cli_session_request(cli, calling, called))
{
DEBUG(1,("failed session request\n"));
- if (do_shutdown) cli_shutdown(cli);
+ if (do_shutdown)
+ cli_shutdown(cli);
return False;
}
if (!cli_negprot(cli))
{
DEBUG(1,("failed negprot\n"));
- if (do_shutdown) cli_shutdown(cli);
+ if (do_shutdown)
+ cli_shutdown(cli);
return False;
}
cli->domain))
{
DEBUG(1,("failed session setup\n"));
- if (do_shutdown) cli_shutdown(cli);
+ if (do_shutdown)
+ cli_shutdown(cli);
return False;
}
if (do_tcon)
(char*)passwd, strlen(passwd)))
{
DEBUG(1,("failed tcon_X\n"));
- if (do_shutdown) cli_shutdown(cli);
+ if (do_shutdown)
+ cli_shutdown(cli);
return False;
}
}
cli->domain))
{
DEBUG(1,("failed session setup\n"));
- if (do_shutdown) cli_shutdown(cli);
+ if (do_shutdown)
+ cli_shutdown(cli);
return False;
}
(char*)nt_sess_pwd, sizeof(nt_sess_pwd)))
{
DEBUG(1,("failed tcon_X\n"));
- if (do_shutdown) cli_shutdown(cli);
+ if (do_shutdown)
+ cli_shutdown(cli);
return False;
}
}
}
- if (do_shutdown) cli_shutdown(cli);
+ if (do_shutdown)
+ cli_shutdown(cli);
return True;
}
}
/* Does the des encryption from the NT or LM MD4 hash. */
-void SMBOWFencrypt(uchar passwd[16], char *c8, uchar p24[24])
+void SMBOWFencrypt(uchar passwd[16], uchar *c8, uchar p24[24])
{
uchar p21[21];
/***************************************************************************
api_lsa_open_policy
***************************************************************************/
-static void api_lsa_open_policy( int uid, prs_struct *data,
+static void api_lsa_open_policy( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
LSA_Q_OPEN_POL q_o;
/***************************************************************************
api_lsa_enum_trust_dom
***************************************************************************/
-static void api_lsa_enum_trust_dom( int uid, prs_struct *data,
+static void api_lsa_enum_trust_dom( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
LSA_Q_ENUM_TRUST_DOM q_e;
lsa_io_q_enum_trust_dom("", &q_e, data, 0);
/* construct reply. return status is always 0x0 */
- lsa_reply_enum_trust_dom(&q_e, rdata,
- 0, NULL, NULL);
+ lsa_reply_enum_trust_dom(&q_e, rdata, 0, NULL, NULL);
}
/***************************************************************************
api_lsa_query_info
***************************************************************************/
-static void api_lsa_query_info( int uid, prs_struct *data,
+static void api_lsa_query_info( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
LSA_Q_QUERY_INFO q_i;
/***************************************************************************
api_lsa_lookup_sids
***************************************************************************/
-static void api_lsa_lookup_sids( int uid, prs_struct *data,
+static void api_lsa_lookup_sids( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
LSA_Q_LOOKUP_SIDS q_l;
pstrcpy(dom_name, lp_workgroup());
string_to_sid(&sid_S_1_1, "S-1-1");
- string_to_sid(&sid_S_1_3, "S-1-3");
- string_to_sid(&sid_S_1_5, "S-1-5");
+ string_to_sid(&sid_S_1_3, "S-1-3");
+ string_to_sid(&sid_S_1_5, "S-1-5");
/* construct reply. return status is always 0x0 */
- lsa_reply_lookup_sids(rdata,
- q_l.sids.num_entries, q_l.sids.sid, /* SIDs */
- dom_name, &global_machine_sid, /* domain name, domain SID */
- &sid_S_1_1, &sid_S_1_3, &sid_S_1_5); /* the three other SIDs */
+ lsa_reply_lookup_sids(rdata,
+ q_l.sids.num_entries, q_l.sids.sid, /* SIDs */
+ dom_name, &global_machine_sid, /* domain name, domain SID */
+ &sid_S_1_1, &sid_S_1_3, &sid_S_1_5); /* the three other SIDs */
}
/***************************************************************************
api_lsa_lookup_names
***************************************************************************/
-static void api_lsa_lookup_names( int uid, prs_struct *data,
+static void api_lsa_lookup_names( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
int i;
pstrcpy(dom_name, lp_workgroup());
string_to_sid(&sid_S_1_1, "S-1-1");
- string_to_sid(&sid_S_1_3, "S-1-3");
- string_to_sid(&sid_S_1_5, "S-1-5");
+ string_to_sid(&sid_S_1_3, "S-1-3");
+ string_to_sid(&sid_S_1_5, "S-1-5");
SMB_ASSERT_ARRAY(q_l.lookup_name, q_l.num_entries);
/***************************************************************************
api_lsa_close
***************************************************************************/
-static void api_lsa_close( int uid, prs_struct *data,
+static void api_lsa_close( uint16 vuid, prs_struct *data,
prs_struct *rdata)
{
/* XXXX this is NOT good */
char *q = mem_data(&(rdata->data), rdata->offset);
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0); q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
rdata->offset += 24;
}
/***************************************************************************
api_lsa_open_secret
***************************************************************************/
-static void api_lsa_open_secret( int uid, prs_struct *data,
+static void api_lsa_open_secret( uint16 vuid, prs_struct *data,
prs_struct *rdata)
{
/* XXXX this is NOT good */
char *q = mem_data(&(rdata->data), rdata->offset);
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0xC0000000 | NT_STATUS_OBJECT_NAME_NOT_FOUND); q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0xC0000000 | NT_STATUS_OBJECT_NAME_NOT_FOUND);
+ q += 4;
rdata->offset += 24;
}
{
return api_rpcTNP(p, "api_ntlsa_rpc", api_lsa_cmds, data);
}
-
/***************************************************************************
api_lsa_open_policy
***************************************************************************/
-static void api_lsa_open_policy( int uid, prs_struct *data,
+static void api_lsa_open_policy( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
LSA_Q_OPEN_POL q_o;
/***************************************************************************
api_lsa_enum_trust_dom
***************************************************************************/
-static void api_lsa_enum_trust_dom( int uid, prs_struct *data,
+static void api_lsa_enum_trust_dom( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
LSA_Q_ENUM_TRUST_DOM q_e;
lsa_io_q_enum_trust_dom("", &q_e, data, 0);
/* construct reply. return status is always 0x0 */
- lsa_reply_enum_trust_dom(&q_e, rdata,
- 0, NULL, NULL);
+ lsa_reply_enum_trust_dom(&q_e, rdata, 0, NULL, NULL);
}
/***************************************************************************
api_lsa_query_info
***************************************************************************/
-static void api_lsa_query_info( int uid, prs_struct *data,
+static void api_lsa_query_info( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
LSA_Q_QUERY_INFO q_i;
/***************************************************************************
api_lsa_lookup_sids
***************************************************************************/
-static void api_lsa_lookup_sids( int uid, prs_struct *data,
+static void api_lsa_lookup_sids( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
LSA_Q_LOOKUP_SIDS q_l;
pstrcpy(dom_name, lp_workgroup());
string_to_sid(&sid_S_1_1, "S-1-1");
- string_to_sid(&sid_S_1_3, "S-1-3");
- string_to_sid(&sid_S_1_5, "S-1-5");
+ string_to_sid(&sid_S_1_3, "S-1-3");
+ string_to_sid(&sid_S_1_5, "S-1-5");
/* construct reply. return status is always 0x0 */
- lsa_reply_lookup_sids(rdata,
- q_l.sids.num_entries, q_l.sids.sid, /* SIDs */
- dom_name, &global_machine_sid, /* domain name, domain SID */
- &sid_S_1_1, &sid_S_1_3, &sid_S_1_5); /* the three other SIDs */
+ lsa_reply_lookup_sids(rdata,
+ q_l.sids.num_entries, q_l.sids.sid, /* SIDs */
+ dom_name, &global_machine_sid, /* domain name, domain SID */
+ &sid_S_1_1, &sid_S_1_3, &sid_S_1_5); /* the three other SIDs */
}
/***************************************************************************
api_lsa_lookup_names
***************************************************************************/
-static void api_lsa_lookup_names( int uid, prs_struct *data,
+static void api_lsa_lookup_names( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
int i;
pstrcpy(dom_name, lp_workgroup());
string_to_sid(&sid_S_1_1, "S-1-1");
- string_to_sid(&sid_S_1_3, "S-1-3");
- string_to_sid(&sid_S_1_5, "S-1-5");
+ string_to_sid(&sid_S_1_3, "S-1-3");
+ string_to_sid(&sid_S_1_5, "S-1-5");
SMB_ASSERT_ARRAY(q_l.lookup_name, q_l.num_entries);
/***************************************************************************
api_lsa_close
***************************************************************************/
-static void api_lsa_close( int uid, prs_struct *data,
+static void api_lsa_close( uint16 vuid, prs_struct *data,
prs_struct *rdata)
{
/* XXXX this is NOT good */
char *q = mem_data(&(rdata->data), rdata->offset);
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0); q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
rdata->offset += 24;
}
/***************************************************************************
api_lsa_open_secret
***************************************************************************/
-static void api_lsa_open_secret( int uid, prs_struct *data,
+static void api_lsa_open_secret( uint16 vuid, prs_struct *data,
prs_struct *rdata)
{
/* XXXX this is NOT good */
char *q = mem_data(&(rdata->data), rdata->offset);
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0); q += 4;
- SIVAL(q, 0, 0xC0000000 | NT_STATUS_OBJECT_NAME_NOT_FOUND); q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0);
+ q += 4;
+ SIVAL(q, 0, 0xC0000000 | NT_STATUS_OBJECT_NAME_NOT_FOUND);
+ q += 4;
rdata->offset += 24;
}
{
return api_rpcTNP(p, "api_ntlsa_rpc", api_lsa_cmds, data);
}
-
/*************************************************************************
api_net_req_chal:
*************************************************************************/
-static void api_net_req_chal( int uid,
+static void api_net_req_chal( uint16 vuid,
prs_struct *data,
prs_struct *rdata)
{
user_struct *vuser;
- DEBUG(5,("api_net_req_chal(%d): vuid %d\n", __LINE__, uid));
+ DEBUG(5,("api_net_req_chal(%d): vuid %d\n", __LINE__, (int)vuid));
- if ((vuser = get_valid_user_struct(uid)) == NULL) return;
+ if ((vuser = get_valid_user_struct(vuid)) == NULL)
+ return;
/* grab the challenge... */
net_io_q_req_chal("", &q_r, data, 0);
/*************************************************************************
api_net_auth_2:
*************************************************************************/
-static void api_net_auth_2( int uid,
+static void api_net_auth_2( uint16 vuid,
prs_struct *data,
prs_struct *rdata)
{
user_struct *vuser;
- if ((vuser = get_valid_user_struct(uid)) == NULL) return;
+ if ((vuser = get_valid_user_struct(vuid)) == NULL)
+ return;
srv_time.time = 0;
/*************************************************************************
api_net_srv_pwset:
*************************************************************************/
-static void api_net_srv_pwset( int uid,
+static void api_net_srv_pwset( uint16 vuid,
prs_struct *data,
prs_struct *rdata)
{
BOOL ret;
user_struct *vuser;
- if ((vuser = get_valid_user_struct(uid)) == NULL) return;
+ if ((vuser = get_valid_user_struct(vuid)) == NULL)
+ return;
/* grab the challenge and encrypted password ... */
net_io_q_srv_pwset("", &q_a, data, 0);
/*************************************************************************
api_net_sam_logoff:
*************************************************************************/
-static void api_net_sam_logoff( int uid,
+static void api_net_sam_logoff( uint16 vuid,
prs_struct *data,
prs_struct *rdata)
{
user_struct *vuser;
- if ((vuser = get_valid_user_struct(uid)) == NULL) return;
+ if ((vuser = get_valid_user_struct(vuid)) == NULL)
+ return;
/* the DOM_ID_INFO_1 structure is a bit big. plus we might want to
dynamically allocate it inside net_io_q_sam_logon, at some point */
/*************************************************************************
api_net_sam_logon:
*************************************************************************/
-static void api_net_sam_logon( int uid,
+static void api_net_sam_logon( uint16 vuid,
prs_struct *data,
prs_struct *rdata)
{
user_struct *vuser = NULL;
- if ((vuser = get_valid_user_struct(uid)) == NULL)
+ if ((vuser = get_valid_user_struct(vuid)) == NULL)
return;
q_l.sam_id.ctr = &ctr;
/*************************************************************************
api_net_trust_dom_list:
*************************************************************************/
-static void api_net_trust_dom_list( int uid,
+static void api_net_trust_dom_list( uint16 vuid,
prs_struct *data,
prs_struct *rdata)
{
/*************************************************************************
api_net_logon_ctrl2:
*************************************************************************/
-static void api_net_logon_ctrl2( int uid,
+static void api_net_logon_ctrl2( uint16 vuid,
prs_struct *data,
prs_struct *rdata)
{
p->open = True;
p->device_state = 0;
p->conn = conn;
- p->uid = vuid;
+ p->vuid = vuid;
p->rhdr.data = NULL;
p->rdata.data = NULL;
/*******************************************************************
api_reg_close
********************************************************************/
-static void api_reg_close( int uid, prs_struct *data,
+static void api_reg_close( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
REG_Q_CLOSE q_r;
/*******************************************************************
api_reg_open
********************************************************************/
-static void api_reg_open( int uid, prs_struct *data,
+static void api_reg_open( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
REG_Q_OPEN_POLICY q_u;
/*******************************************************************
api_reg_open_entry
********************************************************************/
-static void api_reg_open_entry( int uid, prs_struct *data,
+static void api_reg_open_entry( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
REG_Q_OPEN_ENTRY q_u;
/*******************************************************************
api_reg_info
********************************************************************/
-static void api_reg_info( int uid, prs_struct *data,
+static void api_reg_info( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
REG_Q_INFO q_u;
/*******************************************************************
api_samr_close_hnd
********************************************************************/
-static void api_samr_close_hnd( int uid, prs_struct *data, prs_struct *rdata)
+static void api_samr_close_hnd( uint16 vuid, prs_struct *data, prs_struct *rdata)
{
SAMR_Q_CLOSE_HND q_u;
/*******************************************************************
api_samr_open_domain
********************************************************************/
-static void api_samr_open_domain( int uid, prs_struct *data, prs_struct *rdata)
+static void api_samr_open_domain( uint16 vuid, prs_struct *data, prs_struct *rdata)
{
SAMR_Q_OPEN_DOMAIN q_u;
/*******************************************************************
api_samr_unknown_3
********************************************************************/
-static void api_samr_unknown_3( int uid, prs_struct *data, prs_struct *rdata)
+static void api_samr_unknown_3( uint16 vuid, prs_struct *data, prs_struct *rdata)
{
SAMR_Q_UNKNOWN_3 q_u;
/*******************************************************************
api_samr_enum_dom_users
********************************************************************/
-static void api_samr_enum_dom_users( int uid, prs_struct *data, prs_struct *rdata)
+static void api_samr_enum_dom_users( uint16 vuid, prs_struct *data, prs_struct *rdata)
{
SAMR_Q_ENUM_DOM_USERS q_e;
/*******************************************************************
api_samr_enum_dom_groups
********************************************************************/
-static void api_samr_enum_dom_groups( int uid, prs_struct *data, prs_struct *rdata)
+static void api_samr_enum_dom_groups( uint16 vuid, prs_struct *data, prs_struct *rdata)
{
SAMR_Q_ENUM_DOM_GROUPS q_e;
/*******************************************************************
api_samr_enum_dom_aliases
********************************************************************/
-static void api_samr_enum_dom_aliases( int uid, prs_struct *data, prs_struct *rdata)
+static void api_samr_enum_dom_aliases( uint16 vuid, prs_struct *data, prs_struct *rdata)
{
SAMR_Q_ENUM_DOM_ALIASES q_e;
/*******************************************************************
api_samr_query_dispinfo
********************************************************************/
-static void api_samr_query_dispinfo( int uid, prs_struct *data, prs_struct *rdata)
+static void api_samr_query_dispinfo( uint16 vuid, prs_struct *data, prs_struct *rdata)
{
SAMR_Q_QUERY_DISPINFO q_e;
/*******************************************************************
api_samr_query_aliasinfo
********************************************************************/
-static void api_samr_query_aliasinfo( int uid, prs_struct *data, prs_struct *rdata)
+static void api_samr_query_aliasinfo( uint16 vuid, prs_struct *data, prs_struct *rdata)
{
SAMR_Q_QUERY_ALIASINFO q_e;
/*******************************************************************
api_samr_lookup_ids
********************************************************************/
-static void api_samr_lookup_ids( int uid, prs_struct *data, prs_struct *rdata)
+static void api_samr_lookup_ids( uint16 vuid, prs_struct *data, prs_struct *rdata)
{
SAMR_Q_LOOKUP_IDS q_u;
/*******************************************************************
api_samr_lookup_names
********************************************************************/
-static void api_samr_lookup_names( int uid, prs_struct *data, prs_struct *rdata)
+static void api_samr_lookup_names( uint16 vuid, prs_struct *data, prs_struct *rdata)
{
SAMR_Q_LOOKUP_NAMES q_u;
/*******************************************************************
api_samr_unknown_12
********************************************************************/
-static void api_samr_unknown_12( int uid, prs_struct *data, prs_struct *rdata)
+static void api_samr_unknown_12( uint16 vuid, prs_struct *data, prs_struct *rdata)
{
SAMR_Q_UNKNOWN_12 q_u;
/*******************************************************************
api_samr_open_user
********************************************************************/
-static void api_samr_open_user( int rid, prs_struct *data, prs_struct *rdata)
+static void api_samr_open_user( uint16 vuid, prs_struct *data, prs_struct *rdata)
{
SAMR_Q_OPEN_USER q_u;
/*******************************************************************
api_samr_query_userinfo
********************************************************************/
-static void api_samr_query_userinfo( int uid, prs_struct *data, prs_struct *rdata)
+static void api_samr_query_userinfo( uint16 vuid, prs_struct *data, prs_struct *rdata)
{
SAMR_Q_QUERY_USERINFO q_u;
/*******************************************************************
api_samr_query_usergroups
********************************************************************/
-static void api_samr_query_usergroups( int uid, prs_struct *data, prs_struct *rdata)
+static void api_samr_query_usergroups( uint16 vuid, prs_struct *data, prs_struct *rdata)
{
SAMR_Q_QUERY_USERGROUPS q_u;
/* grab the samr unknown 32 */
/*******************************************************************
api_samr_unknown_32
********************************************************************/
-static void api_samr_unknown_32( int uid, prs_struct *data, prs_struct *rdata)
+static void api_samr_unknown_32( uint16 vuid, prs_struct *data, prs_struct *rdata)
{
uint32 status = 0;
struct sam_passwd *sam_pass;
/*******************************************************************
api_samr_connect
********************************************************************/
-static void api_samr_connect( int uid, prs_struct *data, prs_struct *rdata)
+static void api_samr_connect( uint16 vuid, prs_struct *data, prs_struct *rdata)
{
SAMR_Q_CONNECT q_u;
/*******************************************************************
api_samr_open_alias
********************************************************************/
-static void api_samr_open_alias( int uid, prs_struct *data, prs_struct *rdata)
+static void api_samr_open_alias( uint16 vuid, prs_struct *data, prs_struct *rdata)
{
SAMR_Q_OPEN_ALIAS q_u;
/*******************************************************************
********************************************************************/
-static void api_srv_net_srv_get_info( int uid, prs_struct *data,
+static void api_srv_net_srv_get_info( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
SRV_Q_NET_SRV_GET_INFO q_n;
/*******************************************************************
********************************************************************/
-static void api_srv_net_file_enum( int uid, prs_struct *data,
+static void api_srv_net_file_enum( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
SRV_Q_NET_FILE_ENUM q_n;
/*******************************************************************
********************************************************************/
-static void api_srv_net_conn_enum( int uid, prs_struct *data,
+static void api_srv_net_conn_enum( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
SRV_Q_NET_CONN_ENUM q_n;
/*******************************************************************
********************************************************************/
-static void api_srv_net_sess_enum( int uid, prs_struct *data,
+static void api_srv_net_sess_enum( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
SRV_Q_NET_SESS_ENUM q_n;
/*******************************************************************
********************************************************************/
-static void api_srv_net_share_enum( int uid, prs_struct *data,
+static void api_srv_net_share_enum( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
SRV_Q_NET_SHARE_ENUM q_n;
}
/*******************************************************************
********************************************************************/
-static void api_srv_net_remote_tod( int uid, prs_struct *data,
+static void api_srv_net_remote_tod( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
SRV_Q_NET_REMOTE_TOD q_n;
/* do the actual command */
p->rdata.offset = 0;
- api_rpc_cmds[fn_num].fn(p->uid, data, &(p->rdata));
+ api_rpc_cmds[fn_num].fn(p->vuid, data, &(p->rdata));
if (p->rdata.data == NULL || p->rdata.offset == 0)
{
/*******************************************************************
api_wks_query_info
********************************************************************/
-static void api_wks_query_info( int uid, prs_struct *data,
+static void api_wks_query_info( uint16 vuid, prs_struct *data,
prs_struct *rdata )
{
WKS_Q_QUERY_INFO q_u;
{
case CLIENT_IPC:
{
- process(&cli_info, cmd_str) ? 0 : 1;
+ process(&cli_info, cmd_str);
break;
}
Don't depend on vuser being non-null !!. JRA */
user_struct *vuser = get_valid_user_struct(vuid);
if(vuser != NULL)
- DEBUG(3,(" Username of UID %d is %s\n", vuser->uid, vuser->name));
+ DEBUG(3,(" Username of UID %d is %s\n", (int)vuser->uid, vuser->name));
*rparam_len = 6;
*rparam = REALLOC(*rparam,*rparam_len);
return NULL;
vuid -= VUID_OFFSET;
if ((vuid >= (uint16)num_validated_users) ||
- (validated_users[vuid].uid == -1) || (validated_users[vuid].gid == -1))
+ (validated_users[vuid].uid == (uid_t)-1) || (validated_users[vuid].gid == (gid_t)-1))
return NULL;
return &validated_users[vuid];
}
if (vuser == NULL) return;
- vuser->uid = -1;
- vuser->gid = -1;
+ vuser->uid = (uid_t)-1;
+ vuser->gid = (gid_t)-1;
vuser->n_sids = 0;
/* same number of igroups as groups */
vuser->n_groups = 0;
- if (vuser->groups) free(vuser->groups);
+ if (vuser->groups)
+ free((char *)vuser->groups);
- if (vuser->sids) free(vuser->sids);
+ if (vuser->sids)
+ free((char *)vuser->sids);
vuser->sids = NULL;
vuser->groups = NULL;
/****************************************************************************
Setup the groups a user belongs to.
****************************************************************************/
-int setup_groups(char *user, int uid, int gid, int *p_ngroups, GID_T **p_groups)
+int setup_groups(char *user, uid_t uid, gid_t gid, int *p_ngroups, gid_t **p_groups)
{
int i,ngroups;
- GID_T *groups;
- GID_T grp = 0;
+ gid_t grp = 0;
+ gid_t *groups = NULL;
if (-1 == initgroups(user,gid)) {
if (getuid() == 0) {
return -1;
}
- ngroups = getgroups(0,&grp);
- if (ngroups <= 0) ngroups = 32;
+ ngroups = sys_getgroups(0,&grp);
+ if (ngroups <= 0)
+ ngroups = 32;
- groups = (GID_T *)malloc(sizeof(groups[0])*ngroups);
+ if((groups = (gid_t *)malloc(sizeof(gid_t)*ngroups)) == NULL) {
+ DEBUG(0,("setup_groups malloc fail !\n"));
+ return -1;
+ }
- ngroups = getgroups(ngroups,(gid_t *)groups);
+ ngroups = sys_getgroups(ngroups,groups);
(*p_ngroups) = ngroups;
-
(*p_groups) = groups;
DEBUG( 3, ( "%s is in %d groups: ", user, ngroups ) );
has been given. vuid is biased by an offset. This allows us to
tell random client vuid's (normally zero) from valid vuids.
****************************************************************************/
-uint16 register_vuid(int uid,int gid, char *unix_name, char *requested_name, BOOL guest)
+uint16 register_vuid(uid_t uid,gid_t gid, char *unix_name, char *requested_name, BOOL guest)
{
user_struct *vuser;
struct passwd *pwfile; /* for getting real name from passwd file */
&vuser->n_groups,
&vuser->groups);
- DEBUG(3,("uid %d registered to name %s\n",uid,unix_name));
+ DEBUG(3,("uid %d registered to name %s\n",(int)uid,unix_name));
DEBUG(3, ("Clearing default real name\n"));
fstrcpy(vuser->real_name, "<Full Name>\0");
dbgtext( "%s (%s) ", remote_machine, client_addr(Client) );
dbgtext( "connect to service %s ", lp_servicename(SNUM(conn)) );
dbgtext( "as user %s ", user );
- dbgtext( "(uid=%d, gid=%d) ", conn->uid, conn->gid );
+ dbgtext( "(uid=%d, gid=%d) ", (int)conn->uid, (int)conn->gid );
dbgtext( "(pid %d)\n", (int)getpid() );
}
extern int DEBUGLEVEL;
-static int initial_uid;
-static int initial_gid;
+static uid_t initial_uid;
+static gid_t initial_gid;
/* what user is current? */
extern struct current_user current_user;
/****************************************************************************
become the specified uid
****************************************************************************/
-static BOOL become_uid(int uid)
+static BOOL become_uid(uid_t uid)
{
if (initial_uid != 0) {
return(True);
}
- if (uid == -1 || uid == 65535) {
+ if (uid == (uid_t)-1 || ((sizeof(uid_t) == 2) && (uid == (uid_t)65535))) {
static int done;
if (!done) {
- DEBUG(1,("WARNING: using uid %d is a security risk\n",
- uid));
+ DEBUG(1,("WARNING: using uid %d is a security risk\n",(int)uid));
done=1;
}
}
#ifdef HAVE_TRAPDOOR_UID
#ifdef HAVE_SETUIDX
/* AIX3 has setuidx which is NOT a trapoor function (tridge) */
- if (setuidx(ID_EFFECTIVE, (uid_t)uid) != 0) {
- if (seteuid((uid_t)uid) != 0) {
- DEBUG(1,("Can't set uid (setuidx)\n"));
+ if (setuidx(ID_EFFECTIVE, uid) != 0) {
+ if (seteuid(uid) != 0) {
+ DEBUG(1,("Can't set uid %d (setuidx)\n", (int)uid));
return False;
}
}
#endif
{
DEBUG(0,("Couldn't set uid %d currently set to (%d,%d)\n",
- uid,(int)getuid(), (int)geteuid()));
- if (uid > 32000) {
+ (int)uid,(int)getuid(), (int)geteuid()));
+ if (uid > (uid_t)32000) {
DEBUG(0,("Looks like your OS doesn't like high uid values - try using a different account\n"));
}
return(False);
}
- if (((uid == -1) || (uid == 65535)) && geteuid() != uid) {
+ if (((uid == (uid_t)-1) || ((sizeof(uid_t) == 2) && (uid == 65535))) && (geteuid() != uid)) {
DEBUG(0,("Invalid uid -1. perhaps you have a account with uid 65535?\n"));
return(False);
}
/****************************************************************************
become the specified gid
****************************************************************************/
-static BOOL become_gid(int gid)
+static BOOL become_gid(gid_t gid)
{
if (initial_uid != 0)
return(True);
- if (gid == -1 || gid == 65535) {
- DEBUG(1,("WARNING: using gid %d is a security risk\n",gid));
+ if (gid == (gid_t)-1 || ((sizeof(gid_t) == 2) && (gid == (gid_t)65535))) {
+ DEBUG(1,("WARNING: using gid %d is a security risk\n",(int)gid));
}
#ifdef HAVE_SETRESUID
#endif
{
DEBUG(0,("Couldn't set gid %d currently set to (%d,%d)\n",
- gid,(int)getgid(),(int)getegid()));
+ (int)gid,(int)getgid(),(int)getegid()));
if (gid > 32000) {
DEBUG(0,("Looks like your OS doesn't like high gid values - try using a different account\n"));
}
/****************************************************************************
become the specified uid and gid
****************************************************************************/
-static BOOL become_id(int uid,int gid)
+static BOOL become_id(uid_t uid,gid_t gid)
{
return(become_gid(gid) && become_uid(uid));
}
BOOL become_user(connection_struct *conn, uint16 vuid)
{
user_struct *vuser = get_valid_user_struct(vuid);
- int snum,gid;
- int uid;
+ int snum;
+ gid_t gid;
+ uid_t uid;
/*
* We need a separate check in security=share mode due to vuid