]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
Revert "Arggh. Got the path/user the wrong way around. IDL is correct :-)."
authorJeremy Allison <jra@samba.org>
Thu, 22 May 2008 23:20:25 +0000 (16:20 -0700)
committerJeremy Allison <jra@samba.org>
Thu, 22 May 2008 23:20:25 +0000 (16:20 -0700)
This reverts commit 1078b5c53ae9d6f9532eecebf9cf4a1712200b7e.

This message doesn't match the actual change.

source/rpc_server/srv_srvsvc_nt.c

index 9ffe9a569feea0eba44688416a0346cad0800efe..ebbc39c304f8079d4b5fb93d1b9041d9b04c4333 100644 (file)
@@ -32,6 +32,19 @@ extern const struct generic_mapping file_generic_mapping;
 
 #define MAX_SERVER_DISK_ENTRIES 15
 
+/***************************/
+
+/* oops - this is going to take up a *massive* amount of stack. */
+/* the UNISTR2s already have 1024 uint16 chars in them... */
+
+#define MAX_SESS_ENTRIES 32
+
+/***************************/
+
+/* oops - this is going to take up a *massive* amount of stack. */
+/* the UNISTR2s already have 1024 uint16 chars in them... */
+#define MAX_CONN_ENTRIES 32
+
 /* Use for enumerating connections, pipes, & files */
 
 struct file_enum_count {
@@ -89,7 +102,7 @@ static int pipe_enum_fn( struct db_record *rec, void *p)
        fenum->ctr3->array = f;
 
        init_srvsvc_NetFileInfo3(&fenum->ctr3->array[i],
-                                (((uint32_t)(procid_to_pid(&prec.pid))<<16) | prec.pnum),
+                                (uint32_t)((procid_to_pid(&prec.pid)<<16) & prec.pnum),
                                 (FILE_READ_DATA|FILE_WRITE_DATA),
                                 0,
                                 fullpath,
@@ -191,7 +204,7 @@ static void enum_file_fn( const struct share_mode_entry *e,
 
        /* now fill in the srvsvc_NetFileInfo3 struct */
        init_srvsvc_NetFileInfo3(&fenum->ctr3->array[i],
-                                (((uint32_t)(procid_to_pid(&e->pid))<<16) | e->share_file_id),
+                                e->share_file_id,
                                 permissions,
                                 num_locks,
                                 fullpath,
@@ -735,7 +748,7 @@ static WERROR init_srv_sess_info_0(pipes_struct *p,
                return WERR_OK;
        }
 
-       for (; resume_handle < *total_entries; resume_handle++) {
+       for (; resume_handle < *total_entries && num_entries < MAX_SESS_ENTRIES; resume_handle++) {
 
                ctr0->array = TALLOC_REALLOC_ARRAY(p->mem_ctx,
                                                   ctr0->array,
@@ -818,7 +831,7 @@ static WERROR init_srv_sess_info_1(pipes_struct *p,
 
        *total_entries = list_sessions(p->mem_ctx, &session_list);
 
-       for (; resume_handle < *total_entries; resume_handle++) {
+       for (; resume_handle < *total_entries && num_entries < MAX_SESS_ENTRIES; resume_handle++) {
                uint32 num_files;
                uint32 connect_time;
                struct passwd *pw = sys_getpwnam(session_list[resume_handle].username);
@@ -887,7 +900,7 @@ static WERROR init_srv_conn_info_0(struct srvsvc_NetConnCtr0 *ctr0,
 
        ZERO_STRUCTP(ctr0);
 
-       for (; resume_handle < *total_entries; resume_handle++) {
+       for (; resume_handle < *total_entries && num_entries < MAX_CONN_ENTRIES; resume_handle++) {
 
                ctr0->array = TALLOC_REALLOC_ARRAY(talloc_tos(),
                                                   ctr0->array,
@@ -942,7 +955,7 @@ static WERROR init_srv_conn_info_1(struct srvsvc_NetConnCtr1 *ctr1,
 
        ZERO_STRUCTP(ctr1);
 
-       for (; resume_handle < *total_entries; resume_handle++) {
+       for (; (resume_handle < *total_entries) && num_entries < MAX_CONN_ENTRIES; resume_handle++) {
 
                ctr1->array = TALLOC_REALLOC_ARRAY(talloc_tos(),
                                                   ctr1->array,