From a1994d1c967082a5e97ff5ce01c9d5c63deb2db0 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 30 Mar 2004 18:38:21 +0000 Subject: Ensure we cope correctly with ea length of zero. Detect torture fail correctly. Jeremy. (This used to be commit 43db249fb814cef99afecd22c20a824d2519faf9) --- source3/libsmb/clifile.c | 6 ++++++ source3/torture/torture.c | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c index 52164dc0b4..bf7923ec78 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 ead9d69cf1..17a2ee00a8 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; -- cgit