Correctly check for errors in strlower_m() returns.
[kai/samba.git] / source3 / torture / utable.c
index d537ad77c5562174f7670530266d2945d3bf02eb..a2db3ba0fea934a26a708d785554df2a3fdeed79 100644 (file)
 */
 
 #include "includes.h"
+#include "system/filesys.h"
 #include "torture/proto.h"
 #include "../libcli/security/security.h"
+#include "libsmb/libsmb.h"
+#include "libsmb/clirap.h"
 
 bool torture_utable(int dummy)
 {
@@ -40,21 +43,26 @@ bool torture_utable(int dummy)
        memset(valid, 0, sizeof(valid));
 
        cli_mkdir(cli, "\\utable");
-       cli_unlink(cli, "\\utable\\*", aSYSTEM | aHIDDEN);
+       cli_unlink(cli, "\\utable\\*", FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
 
        for (c=1; c < 0x10000; c++) {
+               size_t size = 0;
                char *p;
 
                SSVAL(&c2, 0, c);
                fstrcpy(fname, "\\utable\\x");
                p = fname+strlen(fname);
-               len = convert_string(CH_UTF16LE, CH_UNIX, 
+               if (!convert_string(CH_UTF16LE, CH_UNIX,
                                     &c2, 2, 
-                                    p, sizeof(fname)-strlen(fname), True);
+                                    p, sizeof(fname)-strlen(fname),&size)) {
+                       d_printf("convert_string %s failed !\n", fname);
+                       continue;
+               }
+               len = size;
                p[len] = 0;
                fstrcat(fname,"_a_long_extension");
 
-               if (!NT_STATUS_IS_OK(cli_open(cli, fname, O_RDWR | O_CREAT | O_TRUNC, 
+               if (!NT_STATUS_IS_OK(cli_openx(cli, fname, O_RDWR | O_CREAT | O_TRUNC, 
                                DENY_NONE, &fnum))) {
                        continue;
                }
@@ -70,7 +78,7 @@ bool torture_utable(int dummy)
                }
 
                cli_close(cli, fnum);
-               cli_unlink(cli, fname, aSYSTEM | aHIDDEN);
+               cli_unlink(cli, fname, FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
 
                if (c % 100 == 0) {
                        printf("%d (%d/%d)\r", c, chars_allowed, alt_allowed);
@@ -104,15 +112,19 @@ static char *form_name(int c)
        static fstring fname;
        smb_ucs2_t c2;
        char *p;
-       int len;
+       size_t len = 0;
 
        fstrcpy(fname, "\\utable\\");
        p = fname+strlen(fname);
        SSVAL(&c2, 0, c);
 
-       len = convert_string(CH_UTF16LE, CH_UNIX, 
+       if (!convert_string(CH_UTF16LE, CH_UNIX,
                             &c2, 2, 
-                            p, sizeof(fname)-strlen(fname), True);
+                            p, sizeof(fname)-strlen(fname), &len)) {
+               d_printf("form_name: convert string %s failed\n",
+                       fname);
+               return NULL;
+       }
        p[len] = 0;
        return fname;
 }
@@ -133,7 +145,7 @@ bool torture_casetable(int dummy)
 
        memset(equiv, 0, sizeof(equiv));
 
-       cli_unlink(cli, "\\utable\\*", aSYSTEM | aHIDDEN);
+       cli_unlink(cli, "\\utable\\*", FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
        cli_rmdir(cli, "\\utable");
        if (!NT_STATUS_IS_OK(cli_mkdir(cli, "\\utable"))) {
                printf("Failed to create utable directory!\n");
@@ -141,7 +153,7 @@ bool torture_casetable(int dummy)
        }
 
        for (c=1; c < 0x10000; c++) {
-               SMB_OFF_T size;
+               off_t size;
 
                if (c == '.' || c == '\\') continue;
 
@@ -176,7 +188,7 @@ bool torture_casetable(int dummy)
                                return False;
                        }
 
-                       cli_read(cli, fnum, (char *)c2, 0, size);
+                       cli_read(cli, fnum, (char *)c2, 0, size, NULL);
                        printf("%04x: ", c);
                        equiv[c][0] = c;
                        for (i=0; i<size/sizeof(int); i++) {
@@ -187,11 +199,12 @@ bool torture_casetable(int dummy)
                        fflush(stdout);
                }
 
-               cli_write(cli, fnum, 0, (char *)&c, size, sizeof(c));
+               cli_writeall(cli, fnum, 0, (uint8_t *)&c, size, sizeof(c),
+                            NULL);
                cli_close(cli, fnum);
        }
 
-       cli_unlink(cli, "\\utable\\*", aSYSTEM | aHIDDEN);
+       cli_unlink(cli, "\\utable\\*", FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
        cli_rmdir(cli, "\\utable");
 
        return True;