From d1684fa82ef8720341179238b65a768777681f34 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 13 Mar 2006 23:07:14 +0000 Subject: [PATCH] r14353: Fix coverity bugs #61 and #62. Remember to divide by the size of the data table. Clean up the struct a little. Jeremy. (This used to be commit 338538410d484a9358b60b05a86180275344ffa4) --- source3/include/rpc_spoolss.h | 2 +- source3/rpc_server/srv_spoolss_nt.c | 45 +++++++++++++++++-------------------- 2 files changed, 21 insertions(+), 26 deletions(-) diff --git a/source3/include/rpc_spoolss.h b/source3/include/rpc_spoolss.h index 5429511a8b4..681dcd73d42 100755 --- a/source3/include/rpc_spoolss.h +++ b/source3/include/rpc_spoolss.h @@ -810,7 +810,7 @@ typedef struct spool_notify_info_data } notify_data; uint32 size; - BOOL enc_type; + uint32 enc_type; } SPOOL_NOTIFY_INFO_DATA; typedef struct spool_notify_info diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c index 70432c34ca3..9fd51c9e273 100644 --- a/source3/rpc_server/srv_spoolss_nt.c +++ b/source3/rpc_server/srv_spoolss_nt.c @@ -3441,25 +3441,22 @@ static uint32 size_of_notify_info_data(uint16 type, uint16 field) { int i=0; - for (i = 0; i < sizeof(notify_info_data_table); i++) - { + for (i = 0; i < (sizeof(notify_info_data_table)/sizeof(struct s_notify_info_data_table)); i++) { if ( (notify_info_data_table[i].type == type) - && (notify_info_data_table[i].field == field) ) - { - switch(notify_info_data_table[i].size) - { - case NOTIFY_ONE_VALUE: - case NOTIFY_TWO_VALUE: - return 1; - case NOTIFY_STRING: - return 2; - - /* The only pointer notify data I have seen on - the wire is the submitted time and this has - the notify size set to 4. -tpot */ - - case NOTIFY_POINTER: - return 4; + && (notify_info_data_table[i].field == field) ) { + switch(notify_info_data_table[i].size) { + case NOTIFY_ONE_VALUE: + case NOTIFY_TWO_VALUE: + return 1; + case NOTIFY_STRING: + return 2; + + /* The only pointer notify data I have seen on + the wire is the submitted time and this has + the notify size set to 4. -tpot */ + + case NOTIFY_POINTER: + return 4; case NOTIFY_SECDESC: return 5; @@ -3476,23 +3473,23 @@ static uint32 size_of_notify_info_data(uint16 type, uint16 field) Return the type of notify_info_data. ********************************************************************/ -static int type_of_notify_info_data(uint16 type, uint16 field) +static uint32 type_of_notify_info_data(uint16 type, uint16 field) { - int i=0; + uint32 i=0; - for (i = 0; i < sizeof(notify_info_data_table); i++) { + for (i = 0; i < (sizeof(notify_info_data_table)/sizeof(struct s_notify_info_data_table)); i++) { if (notify_info_data_table[i].type == type && notify_info_data_table[i].field == field) return notify_info_data_table[i].size; } - return False; + return 0; } /**************************************************************************** ****************************************************************************/ -static int search_notify(uint16 type, uint16 field, int *value) +static BOOL search_notify(uint16 type, uint16 field, int *value) { int i; @@ -3521,10 +3518,8 @@ void construct_info_data(SPOOL_NOTIFY_INFO_DATA *info_data, uint16 type, uint16 info_data->enc_type = type_of_notify_info_data(type, field); info_data->id = id; - } - /******************************************************************* * * fill a notify_info struct with info asked -- 2.11.4.GIT