s4:dcesrv_samr_SetUserInfo - deny operations when "fields_present" is 0
authorMatthias Dieter Wallnöfer <mdw@samba.org>
Sun, 27 Jun 2010 21:13:14 +0000 (23:13 +0200)
committerMatthias Dieter Wallnöfer <mdw@samba.org>
Mon, 28 Jun 2010 12:51:05 +0000 (14:51 +0200)
Taken from s3

source4/rpc_server/samr/dcesrv_samr.c

index 0b4e8e25ec6258cfcefb9fd0678b732cf66bc510..9556c8678322ee14df35a554e9a7ddb15d742bf8 100644 (file)
@@ -3183,6 +3183,9 @@ static NTSTATUS dcesrv_samr_SetUserInfo(struct dcesrv_call_state *dce_call, TALL
                break;
 
        case 21:
+               if (r->in.info->info21.fields_present == 0)
+                       return NT_STATUS_INVALID_PARAMETER;
+
 #define IFSET(bit) if (bit & r->in.info->info21.fields_present)
                IFSET(SAMR_FIELD_ACCT_EXPIRY)
                        SET_UINT64(msg, info21.acct_expiry,    "accountExpires");
@@ -3253,6 +3256,9 @@ static NTSTATUS dcesrv_samr_SetUserInfo(struct dcesrv_call_state *dce_call, TALL
                break;
 
        case 23:
+               if (r->in.info->info23.info.fields_present == 0)
+                       return NT_STATUS_INVALID_PARAMETER;
+
 #define IFSET(bit) if (bit & r->in.info->info23.info.fields_present)
                IFSET(SAMR_FIELD_ACCT_EXPIRY)
                        SET_UINT64(msg, info23.info.acct_expiry,    "accountExpires");
@@ -3320,6 +3326,9 @@ static NTSTATUS dcesrv_samr_SetUserInfo(struct dcesrv_call_state *dce_call, TALL
                break;
 
        case 25:
+               if (r->in.info->info25.info.fields_present == 0)
+                       return NT_STATUS_INVALID_PARAMETER;
+
 #define IFSET(bit) if (bit & r->in.info->info25.info.fields_present)
                IFSET(SAMR_FIELD_ACCT_EXPIRY)
                        SET_UINT64(msg, info25.info.acct_expiry,    "accountExpires");