summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/lib/genrand.c29
-rw-r--r--source4/torture/raw/search.c9
2 files changed, 23 insertions, 15 deletions
diff --git a/source4/lib/genrand.c b/source4/lib/genrand.c
index adc6d7344e..72e4997596 100644
--- a/source4/lib/genrand.c
+++ b/source4/lib/genrand.c
@@ -261,27 +261,36 @@ BOOL check_password_quality(const char *s)
Use the random number generator to generate a random string.
********************************************************************/
-static char c_list[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+_-#.,";
-
-char *generate_random_str(TALLOC_CTX *mem_ctx, size_t len)
+char *generate_random_str_list(TALLOC_CTX *mem_ctx, size_t len, const char *list)
{
size_t i;
+ size_t list_len = strlen(list);
char *retstr = talloc(mem_ctx, len + 1);
+ if (!retstr) return NULL;
- if (!retstr)
- return NULL;
-
-again:
generate_random_buffer(retstr, len);
- for (i = 0; i < len; i++)
- retstr[i] = c_list[retstr[i] % (sizeof(c_list)-1) ];
-
+ for (i = 0; i < len; i++) {
+ retstr[i] = list[retstr[i] % list_len];
+ }
retstr[i] = '\0';
+ return retstr;
+}
+
+char *generate_random_str(TALLOC_CTX *mem_ctx, size_t len)
+{
+ char *retstr;
+ const char *c_list = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+_-#.,";
+
+again:
+ retstr = generate_random_str_list(mem_ctx, len, c_list);
+ if (!retstr) return NULL;
+
/* we need to make sure the random string passes basic quality tests
or it might be rejected by windows as a password */
if (len >= 7 && !check_password_quality(retstr)) {
+ talloc_free(retstr);
goto again;
}
diff --git a/source4/torture/raw/search.c b/source4/torture/raw/search.c
index 56e3d4dc15..c8f21de8d8 100644
--- a/source4/torture/raw/search.c
+++ b/source4/torture/raw/search.c
@@ -811,15 +811,15 @@ static BOOL test_modify_search(struct smbcli_state *cli, TALLOC_CTX *mem_ctx)
io2.generic.level = RAW_SEARCH_BOTH_DIRECTORY_INFO;
io2.t2fnext.in.handle = io.t2ffirst.out.handle;
- io2.t2fnext.in.max_count = num_files - 2;
+ io2.t2fnext.in.max_count = num_files - 1;
io2.t2fnext.in.resume_key = 0;
io2.t2fnext.in.flags = 0;
- io2.t2fnext.in.last_name = result.list[result.count-1].both_directory_info.name.s;
+ io2.t2fnext.in.last_name = result.list[result.count-2].both_directory_info.name.s;
status = smb_raw_search_next(cli->tree, mem_ctx,
&io2, &result, multiple_search_callback);
CHECK_STATUS(status, NT_STATUS_OK);
- CHECK_VALUE(result.count, 20);
+ CHECK_VALUE(result.count, 21);
ret &= check_result(&result, "t009-9.txt", True, FILE_ATTRIBUTE_ARCHIVE);
ret &= check_result(&result, "t014-14.txt", False, 0);
@@ -840,7 +840,6 @@ static BOOL test_modify_search(struct smbcli_state *cli, TALLOC_CTX *mem_ctx)
result.list[i].both_directory_info.attrib);
}
}
- exit(1);
done:
smb_raw_exit(cli->session);
@@ -871,7 +870,7 @@ static BOOL test_sorted(struct smbcli_state *cli, TALLOC_CTX *mem_ctx)
printf("Creating %d files\n", num_files);
for (i=0;i<num_files;i++) {
- asprintf(&fname, BASEDIR "\\%s.txt", generate_random_str(mem_ctx, 10));
+ asprintf(&fname, BASEDIR "\\%s.txt", generate_random_str_list(mem_ctx, 10, "abcdefgh"));
fnum = smbcli_open(cli->tree, fname, O_CREAT|O_RDWR, DENY_NONE);
if (fnum == -1) {
printf("Failed to create %s - %s\n", fname, smbcli_errstr(cli->tree));