summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source3/libsmb/clifile.c6
-rw-r--r--source3/torture/torture.c12
2 files changed, 18 insertions, 0 deletions
diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c
index 52164dc0b47..bf7923ec788 100644
--- a/source3/libsmb/clifile.c
+++ b/source3/libsmb/clifile.c
@@ -1297,6 +1297,12 @@ static BOOL cli_get_ea_list(struct cli_state *cli,
goto out;
}
+ if (ea_size == 0) {
+ /* No EA's present. */
+ ret = True;
+ goto out;
+ }
+
p = rdata + 4;
ea_size -= 4;
diff --git a/source3/torture/torture.c b/source3/torture/torture.c
index ead9d69cf15..17a2ee00a8d 100644
--- a/source3/torture/torture.c
+++ b/source3/torture/torture.c
@@ -4366,6 +4366,12 @@ static BOOL run_eatest(int dummy)
}
printf("num_eas = %d\n", num_eas);
+
+ if (num_eas != 20) {
+ printf("Should be 20 EA's stored... failing.\n");
+ correct = False;
+ }
+
for (i = 0; i < num_eas; i++) {
printf("%d: ea_name = %s. Val = ", i, ea_list[i].name);
dump_data(0, ea_list[i].value.data, ea_list[i].value.length);
@@ -4399,6 +4405,12 @@ static BOOL run_eatest(int dummy)
correct = False;
}
+ /* Try and delete a non existant EA. */
+ if (!cli_set_ea_path(cli, fname, "foo", "", 0)) {
+ printf("deleting non-existant EA 'foo' should succeed. %s\n", cli_errstr(cli));
+ correct = False;
+ }
+
talloc_destroy(mem_ctx);
if (!torture_close_connection(cli)) {
correct = False;