Author: vlendec
Date: 2007-08-02 17:37:38 +0000 (Thu, 02 Aug 2007)
New Revision: 24130

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=24130

Log:
Explicitly pass flags2 to srvstr_push

This is in preparation of the trans2 conversion: srvstr_push should not
look at inbuf directly.

Modified:
   branches/SAMBA_3_2/source/include/safe_string.h
   branches/SAMBA_3_2/source/smbd/lanman.c
   branches/SAMBA_3_2/source/smbd/nttrans.c
   branches/SAMBA_3_2/source/smbd/reply.c
   branches/SAMBA_3_2/source/smbd/srvstr.c
   branches/SAMBA_3_2/source/smbd/trans2.c


Changeset:
Modified: branches/SAMBA_3_2/source/include/safe_string.h
===================================================================
--- branches/SAMBA_3_2/source/include/safe_string.h     2007-08-02 15:12:32 UTC 
(rev 24129)
+++ branches/SAMBA_3_2/source/include/safe_string.h     2007-08-02 17:37:38 UTC 
(rev 24130)
@@ -167,7 +167,7 @@
 #define pull_string_talloc(ctx, base_ptr, smb_flags2, dest, src, src_len, 
flags) pull_string_talloc_fn2(SAFE_STRING_FUNCTION_NAME, SAFE_STRING_LINE, ctx, 
base_ptr, smb_flags2, dest, src, src_len, flags)
 #define clistr_push(cli, dest, src, dest_len, flags) 
clistr_push_fn2(SAFE_STRING_FUNCTION_NAME, SAFE_STRING_LINE, cli, dest, src, 
dest_len, flags)
 #define clistr_pull(cli, dest, src, dest_len, src_len, flags) 
clistr_pull_fn2(SAFE_STRING_FUNCTION_NAME, SAFE_STRING_LINE, cli, dest, src, 
dest_len, src_len, flags)
-#define srvstr_push(base_ptr, dest, src, dest_len, flags) 
srvstr_push_fn2(SAFE_STRING_FUNCTION_NAME, SAFE_STRING_LINE, base_ptr, dest, 
src, dest_len, flags)
+#define srvstr_push(base_ptr, smb_flags2, dest, src, dest_len, flags) 
srvstr_push_fn2(SAFE_STRING_FUNCTION_NAME, SAFE_STRING_LINE, base_ptr, 
smb_flags2, dest, src, dest_len, flags)
 
 #define alpha_strcpy(dest,src,other_safe_chars,maxlength) 
alpha_strcpy_fn(SAFE_STRING_FUNCTION_NAME,SAFE_STRING_LINE,dest,src,other_safe_chars,maxlength)
 #define StrnCpy(dest,src,n)            
StrnCpy_fn(SAFE_STRING_FUNCTION_NAME,SAFE_STRING_LINE,dest,src,n)
@@ -211,10 +211,10 @@
     ? __unsafe_string_function_usage_here_size_t__() \
     : clistr_pull_fn(fn_name, fn_line, cli, dest, src, dest_len, srclen, 
flags))
 
-#define srvstr_push_fn2(fn_name, fn_line, base_ptr, dest, src, dest_len, 
flags) \
+#define srvstr_push_fn2(fn_name, fn_line, base_ptr, smb_flags2, dest, src, 
dest_len, flags) \
     (CHECK_STRING_SIZE(dest, dest_len) \
     ? __unsafe_string_function_usage_here_size_t__() \
-    : srvstr_push_fn(fn_name, fn_line, base_ptr, dest, src, dest_len, flags))
+    : srvstr_push_fn(fn_name, fn_line, base_ptr, smb_flags2, dest, src, 
dest_len, flags))
 
 #else
 

Modified: branches/SAMBA_3_2/source/smbd/lanman.c
===================================================================
--- branches/SAMBA_3_2/source/smbd/lanman.c     2007-08-02 15:12:32 UTC (rev 
24129)
+++ branches/SAMBA_3_2/source/smbd/lanman.c     2007-08-02 17:37:38 UTC (rev 
24130)
@@ -2866,7 +2866,7 @@
        p = *rdata;
        p2 = p + struct_len;
        if (uLevel != 20) {
-               srvstr_push(NULL, p,global_myname(),16, 
+               srvstr_push(NULL, 0, p,global_myname(),16,
                        STR_ASCII|STR_UPPER|STR_TERMINATE);
        }
        p += 16;

Modified: branches/SAMBA_3_2/source/smbd/nttrans.c
===================================================================
--- branches/SAMBA_3_2/source/smbd/nttrans.c    2007-08-02 15:12:32 UTC (rev 
24129)
+++ branches/SAMBA_3_2/source/smbd/nttrans.c    2007-08-02 17:37:38 UTC (rev 
24130)
@@ -2571,7 +2571,10 @@
                        shadow_data->num_volumes,fsp->fsp_name));
                if (labels && shadow_data->labels) {
                        for (i=0;i<shadow_data->num_volumes;i++) {
-                               srvstr_push(outbuf, cur_pdata, 
shadow_data->labels[i], 2*sizeof(SHADOW_COPY_LABEL), STR_UNICODE|STR_TERMINATE);
+                               srvstr_push(outbuf, SVAL(outbuf, smb_flg2),
+                                           cur_pdata, shadow_data->labels[i],
+                                           2*sizeof(SHADOW_COPY_LABEL),
+                                           STR_UNICODE|STR_TERMINATE);
                                cur_pdata+=2*sizeof(SHADOW_COPY_LABEL);
                                DEBUGADD(10,("Label[%u]: 
'%s'\n",i,shadow_data->labels[i]));
                        }

Modified: branches/SAMBA_3_2/source/smbd/reply.c
===================================================================
--- branches/SAMBA_3_2/source/smbd/reply.c      2007-08-02 15:12:32 UTC (rev 
24129)
+++ branches/SAMBA_3_2/source/smbd/reply.c      2007-08-02 17:37:38 UTC (rev 
24130)
@@ -715,9 +715,13 @@
                                return(UNIXERROR(ERRDOS,ERRbadfid));
                        }
                        SSVAL(p,0,fsp->rap_print_jobid);             /* Job 
number */
-                       srvstr_push(outbuf, p+2, global_myname(), 15, 
STR_TERMINATE|STR_ASCII);
+                       srvstr_push(outbuf, SVAL(outbuf, smb_flg2), p+2,
+                                   global_myname(), 15,
+                                   STR_TERMINATE|STR_ASCII);
                        if (conn) {
-                               srvstr_push(outbuf, p+18, 
lp_servicename(SNUM(conn)), 13, STR_TERMINATE|STR_ASCII);
+                               srvstr_push(outbuf, SVAL(outbuf, smb_flg2),
+                                           p+18, lp_servicename(SNUM(conn)),
+                                           13, STR_TERMINATE|STR_ASCII);
                        }
                        break;
                }
@@ -1909,7 +1913,8 @@
           thing in the byte section. JRA */
        SSVALS(p, 0, -1); /* what is this? not in spec */
 #endif
-       namelen = srvstr_push(outbuf, p, s, -1, STR_ASCII|STR_TERMINATE);
+       namelen = srvstr_push(outbuf, SVAL(outbuf, smb_flg2), p, s, -1,
+                             STR_ASCII|STR_TERMINATE);
        p += namelen;
        outsize = set_message_end(inbuf,outbuf, p);
 
@@ -3903,7 +3908,8 @@
                        SSVAL(p,5, queue[i].job);
                        SIVAL(p,7,queue[i].size);
                        SCVAL(p,11,0);
-                       srvstr_push(outbuf, p+12, queue[i].fs_user, 16, 
STR_ASCII);
+                       srvstr_push(outbuf, SVAL(outbuf, smb_flg2), p+12,
+                                   queue[i].fs_user, 16, STR_ASCII);
                        p += 28;
                }
 

Modified: branches/SAMBA_3_2/source/smbd/srvstr.c
===================================================================
--- branches/SAMBA_3_2/source/smbd/srvstr.c     2007-08-02 15:12:32 UTC (rev 
24129)
+++ branches/SAMBA_3_2/source/smbd/srvstr.c     2007-08-02 17:37:38 UTC (rev 
24130)
@@ -24,7 +24,7 @@
 /* Make sure we can't write a string past the end of the buffer */
 
 size_t srvstr_push_fn(const char *function, unsigned int line, 
-                     const char *base_ptr, void *dest, 
+                     const char *base_ptr, uint16 smb_flags2, void *dest,
                      const char *src, int dest_len, int flags)
 {
        size_t buf_used = PTR_DIFF(dest, base_ptr);
@@ -68,8 +68,8 @@
                return -1;
        }
 
-       result = srvstr_push((char *)tmp, tmp + buf_size, str, grow_size,
-                            flags);
+       result = srvstr_push((char *)tmp, SVAL(tmp, smb_flg2),
+                            tmp + buf_size, str, grow_size, flags);
 
        if (result == (size_t)-1) {
                DEBUG(0, ("srvstr_push failed\n"));

Modified: branches/SAMBA_3_2/source/smbd/trans2.c
===================================================================
--- branches/SAMBA_3_2/source/smbd/trans2.c     2007-08-02 15:12:32 UTC (rev 
24129)
+++ branches/SAMBA_3_2/source/smbd/trans2.c     2007-08-02 17:37:38 UTC (rev 
24130)
@@ -1303,7 +1303,8 @@
                        p += 23;
                        nameptr = p;
                        p += align_string(outbuf, p, 0);
-                       len = srvstr_push(outbuf, p, fname, -1, STR_TERMINATE);
+                       len = srvstr_push(outbuf, SVAL(outbuf, smb_flg2), p,
+                                         fname, -1, STR_TERMINATE);
                        if (SVAL(outbuf, smb_flg2) & FLAGS2_UNICODE_STRINGS) {
                                if (len > 2) {
                                        SCVAL(nameptr, -1, len - 2);
@@ -1338,7 +1339,9 @@
                        }
                        p += 27;
                        nameptr = p - 1;
-                       len = srvstr_push(outbuf, p, fname, -1, STR_TERMINATE | 
STR_NOALIGN);
+                       len = srvstr_push(outbuf, SVAL(outbuf, smb_flg2),
+                                         p, fname, -1,
+                                         STR_TERMINATE | STR_NOALIGN);
                        if (SVAL(outbuf, smb_flg2) & FLAGS2_UNICODE_STRINGS) {
                                if (len > 2) {
                                        len -= 2;
@@ -1394,7 +1397,9 @@
                        /* Push the ea_data followed by the name. */
                        p += fill_ea_buffer(ea_ctx, p, space_remaining, conn, 
name_list);
                        nameptr = p;
-                       len = srvstr_push(outbuf, p + 1, fname, -1, 
STR_TERMINATE | STR_NOALIGN);
+                       len = srvstr_push(outbuf, SVAL(outbuf, smb_flg2),
+                                         p + 1, fname, -1,
+                                         STR_TERMINATE | STR_NOALIGN);
                        if (SVAL(outbuf, smb_flg2) & FLAGS2_UNICODE_STRINGS) {
                                if (len > 2) {
                                        len -= 2;
@@ -1442,7 +1447,10 @@
                                mangle_map(mangled_name,True,True,
                                           conn->params);
                                mangled_name[12] = 0;
-                               len = srvstr_push(outbuf, p+2, mangled_name, 
24, STR_UPPER|STR_UNICODE);
+                               len = srvstr_push(outbuf,
+                                                 SVAL(outbuf, smb_flg2),
+                                                 p+2, mangled_name, 24,
+                                                 STR_UPPER|STR_UNICODE);
                                if (len < 24) {
                                        memset(p + 2 + len,'\0',24 - len);
                                }
@@ -1451,7 +1459,8 @@
                                memset(p,'\0',26);
                        }
                        p += 2 + 24;
-                       len = srvstr_push(outbuf, p, fname, -1, 
STR_TERMINATE_ASCII);
+                       len = srvstr_push(outbuf, SVAL(outbuf, smb_flg2), p,
+                                         fname, -1, STR_TERMINATE_ASCII);
                        SIVAL(q,0,len);
                        p += len;
                        SIVAL(p,0,0); /* Ensure any padding is null. */
@@ -1472,7 +1481,9 @@
                        SOFF_T(p,0,file_size); p += 8;
                        SOFF_T(p,0,allocation_size); p += 8;
                        SIVAL(p,0,nt_extmode); p += 4;
-                       len = srvstr_push(outbuf, p + 4, fname, -1, 
STR_TERMINATE_ASCII);
+                       len = srvstr_push(outbuf, SVAL(outbuf, smb_flg2),
+                                         p + 4, fname, -1,
+                                         STR_TERMINATE_ASCII);
                        SIVAL(p,0,len);
                        p += 4 + len;
                        SIVAL(p,0,0); /* Ensure any padding is null. */
@@ -1499,7 +1510,8 @@
                                SIVAL(p,0,ea_size); /* Extended attributes */
                                p +=4;
                        }
-                       len = srvstr_push(outbuf, p, fname, -1, 
STR_TERMINATE_ASCII);
+                       len = srvstr_push(outbuf, SVAL(outbuf, smb_flg2), p,
+                                         fname, -1, STR_TERMINATE_ASCII);
                        SIVAL(q, 0, len);
                        p += len;
 
@@ -1517,7 +1529,8 @@
                        p += 4;
                        /* this must *not* be null terminated or w2k gets in a 
loop trying to set an
                           acl on a dir (tridge) */
-                       len = srvstr_push(outbuf, p, fname, -1, 
STR_TERMINATE_ASCII);
+                       len = srvstr_push(outbuf, SVAL(outbuf, smb_flg2),
+                                         p, fname, -1, STR_TERMINATE_ASCII);
                        SIVAL(p, -4, len);
                        p += len;
                        SIVAL(p,0,0); /* Ensure any padding is null. */
@@ -1547,7 +1560,8 @@
                        SIVAL(p,0,0); p += 4; /* Unknown - reserved ? */
                        SIVAL(p,0,sbuf.st_ino); p += 4; /* FileIndexLow */
                        SIVAL(p,0,sbuf.st_dev); p += 4; /* FileIndexHigh */
-                       len = srvstr_push(outbuf, p, fname, -1, 
STR_TERMINATE_ASCII);
+                       len = srvstr_push(outbuf, SVAL(outbuf, smb_flg2), p,
+                                         fname, -1, STR_TERMINATE_ASCII);
                        SIVAL(q, 0, len);
                        p += len; 
                        SIVAL(p,0,0); /* Ensure any padding is null. */
@@ -1585,7 +1599,10 @@
                                mangle_map(mangled_name,True,True,
                                           conn->params);
                                mangled_name[12] = 0;
-                               len = srvstr_push(outbuf, p+2, mangled_name, 
24, STR_UPPER|STR_UNICODE);
+                               len = srvstr_push(outbuf,
+                                                 SVAL(outbuf, smb_flg2),
+                                                 p+2, mangled_name, 24,
+                                                 STR_UPPER|STR_UNICODE);
                                SSVAL(p, 0, len);
                                if (len < 24) {
                                        memset(p + 2 + len,'\0',24 - len);
@@ -1598,7 +1615,8 @@
                        SSVAL(p,0,0); p += 2; /* Reserved ? */
                        SIVAL(p,0,sbuf.st_ino); p += 4; /* FileIndexLow */
                        SIVAL(p,0,sbuf.st_dev); p += 4; /* FileIndexHigh */
-                       len = srvstr_push(outbuf, p, fname, -1, 
STR_TERMINATE_ASCII);
+                       len = srvstr_push(outbuf, SVAL(outbuf, smb_flg2), p,
+                                         fname, -1, STR_TERMINATE_ASCII);
                        SIVAL(q,0,len);
                        p += len;
                        SIVAL(p,0,0); /* Ensure any padding is null. */
@@ -1621,14 +1639,19 @@
                                DEBUG(10,("get_lanman2_dir_entry: 
SMB_FIND_FILE_UNIX\n"));
                                p = store_file_unix_basic(conn, p,
                                                        NULL, &sbuf);
-                               len = srvstr_push(outbuf, p, fname, -1, 
STR_TERMINATE);
+                               len = srvstr_push(outbuf,
+                                                 SVAL(outbuf, smb_flg2),
+                                                 p, fname, -1,
+                                                 STR_TERMINATE);
                        } else {
                                DEBUG(10,("get_lanman2_dir_entry: 
SMB_FIND_FILE_UNIX_INFO2\n"));
                                p = store_file_unix_basic_info2(conn, p,
                                                        NULL, &sbuf);
                                nameptr = p;
                                p += 4;
-                               len = srvstr_push(outbuf, p, fname, -1, 0);
+                               len = srvstr_push(outbuf,
+                                                 SVAL(outbuf, smb_flg2),
+                                                 p, fname, -1, 0);
                                SIVAL(nameptr, 0, len);
                        }
 
@@ -2341,7 +2364,9 @@
                         * this call so try fixing this by adding a terminating 
null to
                         * the pushed string. The change here was adding the 
STR_TERMINATE. JRA.
                         */
-                       len = srvstr_push(outbuf, pdata+l2_vol_szVolLabel, 
vname, -1, STR_NOALIGN|STR_TERMINATE);
+                       len = srvstr_push(outbuf, SVAL(outbuf, smb_flg2),
+                                         pdata+l2_vol_szVolLabel, vname,
+                                         -1, STR_NOALIGN|STR_TERMINATE);
                        SCVAL(pdata,l2_vol_cch,len);
                        data_len = l2_vol_szVolLabel + len;
                        DEBUG(5,("call_trans2qfsinfo : time = %x, namelen = %d, 
name = %s\n",
@@ -2365,14 +2390,16 @@
                        SIVAL(pdata,4,255); /* Max filename component length */
                        /* NOTE! the fstype must *not* be null terminated or 
win98 won't recognise it
                                and will think we can't do long filenames */
-                       len = srvstr_push(outbuf, pdata+12, fstype, -1, 
STR_UNICODE);
+                       len = srvstr_push(outbuf, SVAL(outbuf, smb_flg2),
+                                         pdata+12, fstype, -1, STR_UNICODE);
                        SIVAL(pdata,8,len);
                        data_len = 12 + len;
                        break;
 
                case SMB_QUERY_FS_LABEL_INFO:
                case SMB_FS_LABEL_INFORMATION:
-                       len = srvstr_push(outbuf, pdata+4, vname, -1, 0);
+                       len = srvstr_push(outbuf, SVAL(outbuf, smb_flg2),
+                                         pdata+4, vname, -1, 0);
                        data_len = 4 + len;
                        SIVAL(pdata,0,len);
                        break;
@@ -2388,7 +2415,8 @@
                                (str_checksum(get_local_machine_name())<<16));
 
                        /* Max label len is 32 characters. */
-                       len = srvstr_push(outbuf, pdata+18, vname, -1, 
STR_UNICODE);
+                       len = srvstr_push(outbuf, SVAL(outbuf, smb_flg2),
+                                         pdata+18, vname, -1, STR_UNICODE);
                        SIVAL(pdata,12,len);
                        data_len = 18+len;
 
@@ -3752,7 +3780,9 @@
                        if(!mangle_is_8_3(short_name, True, conn->params)) {
                                mangle_map(short_name,True,True,conn->params);
                        }
-                       len = srvstr_push(outbuf, pdata+4, short_name, -1, 
STR_UNICODE);
+                       len = srvstr_push(outbuf, SVAL(outbuf, smb_flg2),
+                                         pdata+4, short_name, -1,
+                                         STR_UNICODE);
                        data_size = 4 + len;
                        SIVAL(pdata,0,len);
                        break;
@@ -3762,7 +3792,8 @@
                        /*
                          this must be *exactly* right for ACLs on mapped 
drives to work
                         */
-                       len = srvstr_push(outbuf, pdata+4, dos_fname, -1, 
STR_UNICODE);
+                       len = srvstr_push(outbuf, SVAL(outbuf, smb_flg2),
+                                         pdata+4, dos_fname, -1, STR_UNICODE);
                        DEBUG(10,("call_trans2qfilepathinfo: 
SMB_QUERY_FILE_NAME_INFO\n"));
                        data_size = 4 + len;
                        SIVAL(pdata,0,len);
@@ -3803,7 +3834,8 @@
                        pdata += 24;
                        SIVAL(pdata,0,ea_size);
                        pdata += 4; /* EA info */
-                       len = srvstr_push(outbuf, pdata+4, dos_fname, -1, 
STR_UNICODE);
+                       len = srvstr_push(outbuf, SVAL(outbuf, smb_flg2),
+                                         pdata+4, dos_fname, -1, STR_UNICODE);
                        SIVAL(pdata,0,len);
                        pdata += 4 + len;
                        data_size = PTR_DIFF(pdata,(*ppdata));
@@ -3965,7 +3997,10 @@
                                if (len == -1)
                                        return(UNIXERROR(ERRDOS,ERRnoaccess));
                                buffer[len] = 0;
-                               len = srvstr_push(outbuf, pdata, buffer, -1, 
STR_TERMINATE);
+                               len = srvstr_push(outbuf,
+                                                 SVAL(outbuf, smb_flg2),
+                                                 pdata, buffer, -1,
+                                                 STR_TERMINATE);
                                pdata += len;
                                data_size = PTR_DIFF(pdata,(*ppdata));
 
@@ -6485,8 +6520,12 @@
                        CAN ACCEPT THIS IN UNICODE. JRA. */
 
                SSVAL(pdata,0,fsp->rap_print_jobid);                     /* Job 
number */
-               srvstr_push( outbuf, pdata + 2, global_myname(), 15, 
STR_ASCII|STR_TERMINATE); /* Our NetBIOS name */
-               srvstr_push( outbuf, pdata+18, lp_servicename(SNUM(conn)), 13, 
STR_ASCII|STR_TERMINATE); /* Service name */
+               srvstr_push( outbuf, SVAL(outbuf, smb_flg2), pdata + 2,
+                            global_myname(), 15,
+                            STR_ASCII|STR_TERMINATE); /* Our NetBIOS name */
+               srvstr_push( outbuf, SVAL(outbuf, smb_flg2), pdata+18,
+                            lp_servicename(SNUM(conn)), 13,
+                            STR_ASCII|STR_TERMINATE); /* Service name */
                send_trans2_replies(inbuf, 
outbuf,bufsize,*pparams,0,*ppdata,32, max_data_bytes);
                return(-1);
        } else {

Reply via email to