Line data Source code
1 : /* 2 : * Unix SMB/CIFS implementation. 3 : * 4 : * Window Search Service 5 : * 6 : * Copyright (c) Noel Power 7 : * 8 : * This program is free software; you can redistribute it and/or modify 9 : * it under the terms of the GNU General Public License as published by 10 : * the Free Software Foundation; either version 3 of the License, or 11 : * (at your option) any later version. 12 : * 13 : * This program is distributed in the hope that it will be useful, 14 : * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 : * GNU General Public License for more details. 17 : * 18 : * You should have received a copy of the GNU General Public License 19 : * along with this program; if not, see <http://www.gnu.org/licenses/>. 20 : */ 21 : #include "includes.h" 22 : #include "librpc/wsp/wsp_helper.h" 23 : #include "librpc/gen_ndr/ndr_wsp.h" 24 : 25 0 : uint32_t calc_array_size(struct safearraybound *bounds, uint32_t ndims) 26 : { 27 0 : uint32_t i; 28 0 : uint32_t result = 0; 29 : 30 0 : for(i = 0; i < ndims; i++) { 31 0 : uint32_t celements = bounds[i].celements; 32 0 : if (i) { 33 0 : SMB_ASSERT((result > UINT32_MAX / celements) == false); 34 0 : result = result * celements; 35 : } else { 36 0 : result = celements; 37 : } 38 : } 39 0 : return result; 40 : }