Make sure we don't clobber the stack when response consists of the empty
[Samba/gebeck_regimport.git] / source3 / libsmb / clifsinfo.c
blob00fe189e9a9a3e591e2d3c924ea6594ac1548480
1 /*
2 Unix SMB/CIFS implementation.
3 FS info functions
4 Copyright (C) Stefan (metze) Metzmacher 2003
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 #include "includes.h"
24 BOOL cli_get_fs_attr_info(struct cli_state *cli, uint32 *fs_attr)
26 BOOL ret = False;
27 uint16 setup;
28 char param[2];
29 char *rparam=NULL, *rdata=NULL;
30 unsigned int rparam_count=0, rdata_count=0;
32 if (!cli||!fs_attr)
33 smb_panic("cli_get_fs_attr_info() called with NULL Pionter!");
35 setup = TRANSACT2_QFSINFO;
37 SSVAL(param,0,SMB_QUERY_FS_ATTRIBUTE_INFO);
39 if (!cli_send_trans(cli, SMBtrans2,
40 NULL,
41 0, 0,
42 &setup, 1, 0,
43 param, 2, 0,
44 NULL, 0, 560)) {
45 goto cleanup;
48 if (!cli_receive_trans(cli, SMBtrans2,
49 &rparam, &rparam_count,
50 &rdata, &rdata_count)) {
51 goto cleanup;
54 if (cli_is_error(cli)) {
55 ret = False;
56 goto cleanup;
57 } else {
58 ret = True;
61 if (rdata_count < 12) {
62 goto cleanup;
65 *fs_attr = IVAL(rdata,0);
67 /* todo: but not yet needed
68 * return the other stuff
71 cleanup:
72 SAFE_FREE(rparam);
73 SAFE_FREE(rdata);
75 return ret;