diff options
-rw-r--r-- | source3/libsmb/clifile.c | 6 | ||||
-rw-r--r-- | source3/torture/torture.c | 12 |
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; |