RIP BOOL. Convert BOOL -> bool. I found a few interesting
[jerry/samba.git] / source / libsmb / clisecdesc.c
index 2989966f4dee7ddb7b8d96c45737017b76828b3f..46a660941514642f916a6922787630d943bcb622 100644 (file)
@@ -5,7 +5,7 @@
    
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
    
    This program is distributed in the hope that it will be useful,
@@ -14,8 +14,7 @@
    GNU General Public License for more details.
    
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "includes.h"
@@ -30,6 +29,7 @@ SEC_DESC *cli_query_secdesc(struct cli_state *cli, int fnum,
        char *rparam=NULL, *rdata=NULL;
        unsigned int rparam_count=0, rdata_count=0;
        prs_struct pd;
+       bool pd_initialized = False;
        SEC_DESC *psd = NULL;
 
        SIVAL(param, 0, fnum);
@@ -53,7 +53,13 @@ SEC_DESC *cli_query_secdesc(struct cli_state *cli, int fnum,
                goto cleanup;
        }
 
-       prs_init(&pd, rdata_count, mem_ctx, UNMARSHALL);
+       if (cli_is_error(cli))
+               goto cleanup;
+
+       if (!prs_init(&pd, rdata_count, mem_ctx, UNMARSHALL)) {
+               goto cleanup;
+       }
+       pd_initialized = True;
        prs_copy_data_in(&pd, rdata, rdata_count);
        prs_set_offset(&pd,0);
 
@@ -67,14 +73,15 @@ SEC_DESC *cli_query_secdesc(struct cli_state *cli, int fnum,
        SAFE_FREE(rparam);
        SAFE_FREE(rdata);
 
-       prs_mem_free(&pd);
+       if (pd_initialized)
+               prs_mem_free(&pd);
        return psd;
 }
 
 /****************************************************************************
   set the security descriptor for a open file
  ****************************************************************************/
-BOOL cli_set_secdesc(struct cli_state *cli, int fnum, SEC_DESC *sd)
+bool cli_set_secdesc(struct cli_state *cli, int fnum, SEC_DESC *sd)
 {
        char param[8];
        char *rparam=NULL, *rdata=NULL;
@@ -82,7 +89,7 @@ BOOL cli_set_secdesc(struct cli_state *cli, int fnum, SEC_DESC *sd)
        uint32 sec_info = 0;
        TALLOC_CTX *mem_ctx;
        prs_struct pd;
-       BOOL ret = False;
+       bool ret = False;
 
        if ((mem_ctx = talloc_init("cli_set_secdesc")) == NULL) {
                DEBUG(0,("talloc_init failed.\n"));
@@ -99,11 +106,11 @@ BOOL cli_set_secdesc(struct cli_state *cli, int fnum, SEC_DESC *sd)
 
        SIVAL(param, 0, fnum);
 
-       if (sd->off_dacl)
+       if (sd->dacl)
                sec_info |= DACL_SECURITY_INFORMATION;
-       if (sd->off_owner_sid)
+       if (sd->owner_sid)
                sec_info |= OWNER_SECURITY_INFORMATION;
-       if (sd->off_grp_sid)
+       if (sd->group_sid)
                sec_info |= GROUP_SECURITY_INFORMATION;
        SSVAL(param, 4, sec_info);