The branch, master has been updated via 0c6c081 s4:torture/winbind: add torture:winbindd_domain_without_prefix option via 86f29d6 s4:torture/local: add more torture_assert() checks via 85827c5 selftest/Samba4: use 'testallowed account' instead of 'test allowed' via ff5f466 selftest/knownfail: remove unused ^samba4.winbind.struct.show_sequence\(ad_dc\) line from 2bca4cd rpcclient: Fix the timeout command
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 0c6c081dc4e743c142a59d90c9e7f5b6e4cf5bd1 Author: Stefan Metzmacher <me...@samba.org> Date: Sat Mar 28 10:04:30 2015 +0100 s4:torture/winbind: add torture:winbindd_domain_without_prefix option We should not assume that names in the domain specified by 'torture:winbindd_netbios_domain' have no DOMAIN\ prefix. On an AD DC we prefix all principals. Bug: https://bugzilla.samba.org/show_bug.cgi?id=11183 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> Autobuild-User(master): Stefan Metzmacher <me...@samba.org> Autobuild-Date(master): Thu Apr 9 19:35:38 CEST 2015 on sn-devel-104 commit 86f29d62a6ebb6c0245c07a9d8e7524ac0b93940 Author: Stefan Metzmacher <me...@samba.org> Date: Sun Mar 29 11:21:16 2015 +0200 s4:torture/local: add more torture_assert() checks We need to make sure we return when torture_assert_passwd_equal() or torture_assert_group_equal() fails. Bug: https://bugzilla.samba.org/show_bug.cgi?id=11183 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> commit 85827c5292fca0eef565b0361948405aa662c59b Author: Stefan Metzmacher <me...@samba.org> Date: Sun Mar 29 11:15:29 2015 +0200 selftest/Samba4: use 'testallowed account' instead of 'test allowed' local.nss test might print lines starting with 'test allowed:...' and that confused the subunit parser. Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> commit ff5f46682566452dc28123e052bb32216ebf1e14 Author: Stefan Metzmacher <me...@samba.org> Date: Sat Mar 28 10:07:41 2015 +0100 selftest/knownfail: remove unused ^samba4.winbind.struct.show_sequence\(ad_dc\) line Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> ----------------------------------------------------------------------- Summary of changes: selftest/knownfail | 1 - selftest/target/Samba4.pm | 17 ++- source4/selftest/tests.py | 6 +- source4/torture/local/nss_tests.c | 255 +++++++++++++++++++-------------- source4/torture/winbind/struct_based.c | 8 +- 5 files changed, 164 insertions(+), 123 deletions(-) Changeset truncated at 500 lines: diff --git a/selftest/knownfail b/selftest/knownfail index c16e916..d4a6923 100644 --- a/selftest/knownfail +++ b/selftest/knownfail @@ -241,7 +241,6 @@ # # The Samba4 winbind does not cover the full winbind protocol, so these are expected # -^samba4.winbind.struct.show_sequence\(ad_dc\) ^samba.blackbox.wbinfo\(ad_dc_ntvfs:local\).wbinfo -N against ad_dc_ntvfs ^samba.blackbox.wbinfo\(ad_dc_ntvfs:local\).wbinfo -I against ad_dc_ntvfs ^samba.blackbox.wbinfo\(ad_dc_ntvfs:local\).wbinfo --trusted-domains against ad_dc_ntvfs diff --git a/selftest/target/Samba4.pm b/selftest/target/Samba4.pm index 9d765c4..26f6dda 100755 --- a/selftest/target/Samba4.pm +++ b/selftest/target/Samba4.pm @@ -816,8 +816,9 @@ sub provision_raw_step2($$$) return undef; } + my $testallowed_account = "testallowed"; my $samba_tool_cmd = Samba::bindir_path($self, "samba-tool") - . " user add --configfile=$ctx->{smb_conf} testallowed $ctx->{password}"; + . " user add --configfile=$ctx->{smb_conf} $testallowed_account $ctx->{password}"; unless (system($samba_tool_cmd) == 0) { warn("Unable to add testallowed user: \n$samba_tool_cmd\n"); return undef; @@ -830,12 +831,13 @@ sub provision_raw_step2($$$) $base_dn = "DC=$ctx->{netbiosname}"; } - my $user_dn = "cn=testallowed,cn=users,$base_dn"; + my $user_dn = "cn=$testallowed_account,cn=users,$base_dn"; + $testallowed_account = "testallowed account"; open(LDIF, "|$ldbmodify -H $ctx->{privatedir}/sam.ldb"); print LDIF "dn: $user_dn changetype: modify replace: samAccountName -samAccountName: test allowed +samAccountName: $testallowed_account - "; close(LDIF); @@ -869,9 +871,9 @@ userPrincipalName: testdenied_upn\@$ctx->{realm}.upn close(LDIF); $samba_tool_cmd = Samba::bindir_path($self, "samba-tool") - . " group addmembers --configfile=$ctx->{smb_conf} 'Allowed RODC Password Replication Group' 'test allowed'"; + . " group addmembers --configfile=$ctx->{smb_conf} 'Allowed RODC Password Replication Group' '$testallowed_account'"; unless (system($samba_tool_cmd) == 0) { - warn("Unable to add 'test allowed' user to 'Allowed RODC Password Replication Group': \n$samba_tool_cmd\n"); + warn("Unable to add '$testallowed_account' user to 'Allowed RODC Password Replication Group': \n$samba_tool_cmd\n"); return undef; } @@ -1637,10 +1639,11 @@ sub provision_rodc($$$) return undef; } - # This ensures deterministic behaviour for tests that want to have the 'test allowed' + # This ensures deterministic behaviour for tests that want to have the 'testallowed account' # user password verified on the RODC + my $testallowed_account = "testallowed account"; $cmd = "KRB5_CONFIG=\"$ret->{KRB5_CONFIG}\" "; - $cmd .= "$samba_tool rodc preload 'test allowed' $ret->{CONFIGURATION}"; + $cmd .= "$samba_tool rodc preload '$testallowed_account' $ret->{CONFIGURATION}"; $cmd .= " --server=$dcvars->{DC_SERVER}"; unless (system($cmd) == 0) { diff --git a/source4/selftest/tests.py b/source4/selftest/tests.py index bea1540..015e902 100755 --- a/source4/selftest/tests.py +++ b/source4/selftest/tests.py @@ -368,11 +368,13 @@ plansmbtorture4testsuite('base.xcopy', "ad_dc_ntvfs", ['//$NETBIOSNAME/xcopy_sha plansmbtorture4testsuite('base.xcopy', "s4member", ['//$NETBIOSNAME/xcopy_share', '-k', 'no', '--signing=no', '-U%'], modname="samba4.smb.signing --signing=no anon") -wb_opts = ["--option=\"torture:strict mode=no\"", "--option=\"torture:timelimit=1\"", "--option=\"torture:winbindd_separator=/\"", "--option=\"torture:winbindd_netbios_name=$SERVER\"", "--option=\"torture:winbindd_netbios_domain=$DOMAIN\""] +wb_opts_default = ["--option=\"torture:strict mode=no\"", "--option=\"torture:timelimit=1\"", "--option=\"torture:winbindd_separator=/\"", "--option=\"torture:winbindd_netbios_name=$SERVER\"", "--option=\"torture:winbindd_netbios_domain=$DOMAIN\""] winbind_ad_client_tests = smbtorture4_testsuites("winbind.struct") + smbtorture4_testsuites("winbind.pac") winbind_wbclient_tests = smbtorture4_testsuites("winbind.wbclient") for env in ["ad_dc", "s4member", "ad_member"]: + wb_opts = wb_opts_default + wb_opts += ["--option=\"torture:winbindd_domain_without_prefix=$DOMAIN\""] for t in winbind_ad_client_tests: plansmbtorture4testsuite(t, "%s:local" % env, wb_opts + ['//$SERVER/tmp', '--realm=$REALM', '--machine-pass', '--option=torture:addc=$DC_SERVER']) @@ -572,7 +574,7 @@ for env in ["ad_dc_ntvfs", "rodc", "promoted_dc", "ad_dc", "fl2000dc", "fl2003dc plansmbtorture4testsuite('krb5.kdc', "%s:local" % env, ['ncacn_np:$SERVER_IP', "-k", "yes", '-P', '--workgroup=$DOMAIN', '--realm=$REALM', '--option=torture:krb5-hostname=$SERVER', '--option=torture:expect_machine_account=true'] + extra_options, "samba4.krb5.kdc with machine account") - plansmbtorture4testsuite('krb5.kdc', env, ['ncacn_np:$SERVER_IP', "-k", "yes", '-Utest\ allowed%$PASSWORD', + plansmbtorture4testsuite('krb5.kdc', env, ['ncacn_np:$SERVER_IP', "-k", "yes", '-Utestallowed\ account%$PASSWORD', '--workgroup=$DOMAIN', '--realm=$REALM', '--option=torture:expect_machine_account=true', '--option=torture:krb5-upn=testallowed\ upn@$REALM', diff --git a/source4/torture/local/nss_tests.c b/source4/torture/local/nss_tests.c index a6baf21..546d7eb 100644 --- a/source4/torture/local/nss_tests.c +++ b/source4/torture/local/nss_tests.c @@ -30,12 +30,17 @@ static bool copy_passwd(struct torture_context *tctx, struct passwd *p) { p->pw_name = talloc_strdup(tctx, pwd->pw_name); + torture_assert(tctx, (p->pw_name != NULL || pwd->pw_name == NULL), __location__); p->pw_passwd = talloc_strdup(tctx, pwd->pw_passwd); + torture_assert(tctx, (p->pw_passwd != NULL || pwd->pw_passwd == NULL), __location__); p->pw_uid = pwd->pw_uid; p->pw_gid = pwd->pw_gid; p->pw_gecos = talloc_strdup(tctx, pwd->pw_gecos); + torture_assert(tctx, (p->pw_gecos != NULL || pwd->pw_gecos == NULL), __location__); p->pw_dir = talloc_strdup(tctx, pwd->pw_dir); + torture_assert(tctx, (p->pw_dir != NULL || pwd->pw_dir == NULL), __location__); p->pw_shell = talloc_strdup(tctx, pwd->pw_shell); + torture_assert(tctx, (p->pw_shell != NULL || pwd->pw_shell == NULL), __location__); return true; } @@ -58,19 +63,22 @@ static bool test_getpwnam(struct torture_context *tctx, struct passwd *pwd_p) { struct passwd *pwd; + int ret; torture_comment(tctx, "Testing getpwnam: %s\n", name); + errno = 0; pwd = getpwnam(name); - if (pwd) { - print_passwd(pwd); - } + ret = errno; + torture_assert(tctx, (pwd != NULL), talloc_asprintf(tctx, + "getpwnam(%s) failed - %d - %s", + name, ret, strerror(ret))); - if (pwd_p) { - copy_passwd(tctx, pwd, pwd_p); + if (pwd_p != NULL) { + torture_assert(tctx, copy_passwd(tctx, pwd, pwd_p), __location__); } - return pwd ? true : false; + return true; } static bool test_getpwnam_r(struct torture_context *tctx, @@ -84,17 +92,14 @@ static bool test_getpwnam_r(struct torture_context *tctx, torture_comment(tctx, "Testing getpwnam_r: %s\n", name); ret = getpwnam_r(name, &pwd, buffer, sizeof(buffer), &pwdp); - if (ret != 0) { - if (ret != ENOENT) { - torture_comment(tctx, "got %d return code\n", ret); - } - return false; - } + torture_assert(tctx, ret == 0, talloc_asprintf(tctx, + "getpwnam_r(%s) failed - %d - %s", + name, ret, strerror(ret))); print_passwd(&pwd); - if (pwd_p) { - copy_passwd(tctx, &pwd, pwd_p); + if (pwd_p != NULL) { + torture_assert(tctx, copy_passwd(tctx, &pwd, pwd_p), __location__); } return true; @@ -105,19 +110,24 @@ static bool test_getpwuid(struct torture_context *tctx, struct passwd *pwd_p) { struct passwd *pwd; + int ret; torture_comment(tctx, "Testing getpwuid: %lu\n", (unsigned long)uid); + errno = 0; pwd = getpwuid(uid); - if (pwd) { - print_passwd(pwd); - } + ret = errno; + torture_assert(tctx, (pwd != NULL), talloc_asprintf(tctx, + "getpwuid(%lu) failed - %d - %s", + (unsigned long)uid, ret, strerror(ret))); + + print_passwd(pwd); - if (pwd_p) { - copy_passwd(tctx, pwd, pwd_p); + if (pwd_p != NULL) { + torture_assert(tctx, copy_passwd(tctx, pwd, pwd_p), __location__); } - return pwd ? true : false; + return true; } static bool test_getpwuid_r(struct torture_context *tctx, @@ -131,17 +141,14 @@ static bool test_getpwuid_r(struct torture_context *tctx, torture_comment(tctx, "Testing getpwuid_r: %lu\n", (unsigned long)uid); ret = getpwuid_r(uid, &pwd, buffer, sizeof(buffer), &pwdp); - if (ret != 0) { - if (ret != ENOENT) { - torture_comment(tctx, "got %d return code\n", ret); - } - return false; - } + torture_assert(tctx, ret == 0, talloc_asprintf(tctx, + "getpwuid_r(%lu) failed - %d - %s", + (unsigned long)uid, ret, strerror(ret))); print_passwd(&pwd); - if (pwd_p) { - copy_passwd(tctx, &pwd, pwd_p); + if (pwd_p != NULL) { + torture_assert(tctx, copy_passwd(tctx, &pwd, pwd_p), __location__); } return true; @@ -155,13 +162,17 @@ static bool copy_group(struct torture_context *tctx, int i; g->gr_name = talloc_strdup(tctx, grp->gr_name); + torture_assert(tctx, (g->gr_name != NULL || grp->gr_name == NULL), __location__); g->gr_passwd = talloc_strdup(tctx, grp->gr_passwd); + torture_assert(tctx, (g->gr_passwd != NULL || grp->gr_passwd == NULL), __location__); g->gr_gid = grp->gr_gid; g->gr_mem = NULL; for (i=0; grp->gr_mem && grp->gr_mem[i]; i++) { g->gr_mem = talloc_realloc(tctx, g->gr_mem, char *, i + 2); + torture_assert(tctx, (g->gr_mem != NULL), __location__); g->gr_mem[i] = talloc_strdup(g->gr_mem, grp->gr_mem[i]); + torture_assert(tctx, (g->gr_mem[i] != NULL), __location__); g->gr_mem[i+1] = NULL; } @@ -192,19 +203,24 @@ static bool test_getgrnam(struct torture_context *tctx, struct group *grp_p) { struct group *grp; + int ret; torture_comment(tctx, "Testing getgrnam: %s\n", name); + errno = 0; grp = getgrnam(name); - if (grp) { - print_group(grp); - } + ret = errno; + torture_assert(tctx, (grp != NULL), talloc_asprintf(tctx, + "getgrnam(%s) failed - %d - %s", + name, ret, strerror(ret))); + + print_group(grp); - if (grp_p) { - copy_group(tctx, grp, grp_p); + if (grp_p != NULL) { + torture_assert(tctx, copy_group(tctx, grp, grp_p), __location__); } - return grp ? true : false; + return true; } static bool test_getgrnam_r(struct torture_context *tctx, @@ -218,17 +234,14 @@ static bool test_getgrnam_r(struct torture_context *tctx, torture_comment(tctx, "Testing getgrnam_r: %s\n", name); ret = getgrnam_r(name, &grp, buffer, sizeof(buffer), &grpp); - if (ret != 0) { - if (ret != ENOENT) { - torture_comment(tctx, "got %d return code\n", ret); - } - return false; - } + torture_assert(tctx, ret == 0, talloc_asprintf(tctx, + "getgrnam_r(%s) failed - %d - %s", + name, ret, strerror(ret))); print_group(&grp); - if (grp_p) { - copy_group(tctx, &grp, grp_p); + if (grp_p != NULL) { + torture_assert(tctx, copy_group(tctx, &grp, grp_p), __location__); } return true; @@ -240,19 +253,24 @@ static bool test_getgrgid(struct torture_context *tctx, struct group *grp_p) { struct group *grp; + int ret; torture_comment(tctx, "Testing getgrgid: %lu\n", (unsigned long)gid); + errno = 0; grp = getgrgid(gid); - if (grp) { - print_group(grp); - } + ret = errno; + torture_assert(tctx, (grp != NULL), talloc_asprintf(tctx, + "getgrgid(%lu) failed - %d - %s", + (unsigned long)gid, ret, strerror(ret))); + + print_group(grp); - if (grp_p) { - copy_group(tctx, grp, grp_p); + if (grp_p != NULL) { + torture_assert(tctx, copy_group(tctx, grp, grp_p), __location__); } - return grp ? true : false; + return true; } static bool test_getgrgid_r(struct torture_context *tctx, @@ -266,17 +284,14 @@ static bool test_getgrgid_r(struct torture_context *tctx, torture_comment(tctx, "Testing getgrgid_r: %lu\n", (unsigned long)gid); ret = getgrgid_r(gid, &grp, buffer, sizeof(buffer), &grpp); - if (ret != 0) { - if (ret != ENOENT) { - torture_comment(tctx, "got %d return code\n", ret); - } - return false; - } + torture_assert(tctx, ret == 0, talloc_asprintf(tctx, + "getgrgid_r(%lu) failed - %d - %s", + (unsigned long)gid, ret, strerror(ret))); print_group(&grp); - if (grp_p) { - copy_group(tctx, &grp, grp_p); + if (grp_p != NULL) { + torture_assert(tctx, copy_group(tctx, &grp, grp_p), __location__); } return true; @@ -391,14 +406,17 @@ static bool test_passwd(struct torture_context *tctx) for (i=0; i < num_pwd; i++) { torture_assert(tctx, test_getpwnam(tctx, pwd[i].pw_name, &pwd1), "failed to call getpwnam for enumerated user"); - torture_assert_passwd_equal(tctx, &pwd[i], &pwd1, - "getpwent and getpwnam gave different results"); + torture_assert(tctx, torture_assert_passwd_equal(tctx, &pwd[i], &pwd1, + "getpwent and getpwnam gave different results"), + __location__); torture_assert(tctx, test_getpwuid(tctx, pwd[i].pw_uid, &pwd2), "failed to call getpwuid for enumerated user"); - torture_assert_passwd_equal(tctx, &pwd[i], &pwd2, - "getpwent and getpwuid gave different results"); - torture_assert_passwd_equal(tctx, &pwd1, &pwd2, - "getpwnam and getpwuid gave different results"); + torture_assert(tctx, torture_assert_passwd_equal(tctx, &pwd[i], &pwd2, + "getpwent and getpwuid gave different results"), + __location__); + torture_assert(tctx, torture_assert_passwd_equal(tctx, &pwd1, &pwd2, + "getpwnam and getpwuid gave different results"), + __location__); } return true; @@ -416,14 +434,17 @@ static bool test_passwd_r(struct torture_context *tctx) for (i=0; i < num_pwd; i++) { torture_assert(tctx, test_getpwnam_r(tctx, pwd[i].pw_name, &pwd1), "failed to call getpwnam_r for enumerated user"); - torture_assert_passwd_equal(tctx, &pwd[i], &pwd1, - "getpwent_r and getpwnam_r gave different results"); + torture_assert(tctx, torture_assert_passwd_equal(tctx, &pwd[i], &pwd1, + "getpwent_r and getpwnam_r gave different results"), + __location__); torture_assert(tctx, test_getpwuid_r(tctx, pwd[i].pw_uid, &pwd2), "failed to call getpwuid_r for enumerated user"); - torture_assert_passwd_equal(tctx, &pwd[i], &pwd2, - "getpwent_r and getpwuid_r gave different results"); - torture_assert_passwd_equal(tctx, &pwd1, &pwd2, - "getpwnam_r and getpwuid_r gave different results"); + torture_assert(tctx, torture_assert_passwd_equal(tctx, &pwd[i], &pwd2, + "getpwent_r and getpwuid_r gave different results"), + __location__); + torture_assert(tctx, torture_assert_passwd_equal(tctx, &pwd1, &pwd2, + "getpwnam_r and getpwuid_r gave different results"), + __location__); } return true; @@ -441,24 +462,30 @@ static bool test_passwd_r_cross(struct torture_context *tctx) for (i=0; i < num_pwd; i++) { torture_assert(tctx, test_getpwnam_r(tctx, pwd[i].pw_name, &pwd1), "failed to call getpwnam_r for enumerated user"); - torture_assert_passwd_equal(tctx, &pwd[i], &pwd1, - "getpwent_r and getpwnam_r gave different results"); + torture_assert(tctx, torture_assert_passwd_equal(tctx, &pwd[i], &pwd1, + "getpwent_r and getpwnam_r gave different results"), + __location__); torture_assert(tctx, test_getpwuid_r(tctx, pwd[i].pw_uid, &pwd2), "failed to call getpwuid_r for enumerated user"); - torture_assert_passwd_equal(tctx, &pwd[i], &pwd2, - "getpwent_r and getpwuid_r gave different results"); - torture_assert_passwd_equal(tctx, &pwd1, &pwd2, - "getpwnam_r and getpwuid_r gave different results"); + torture_assert(tctx, torture_assert_passwd_equal(tctx, &pwd[i], &pwd2, + "getpwent_r and getpwuid_r gave different results"), + __location__); + torture_assert(tctx, torture_assert_passwd_equal(tctx, &pwd1, &pwd2, + "getpwnam_r and getpwuid_r gave different results"), + __location__); torture_assert(tctx, test_getpwnam(tctx, pwd[i].pw_name, &pwd3), "failed to call getpwnam for enumerated user"); - torture_assert_passwd_equal(tctx, &pwd[i], &pwd3, - "getpwent_r and getpwnam gave different results"); + torture_assert(tctx, torture_assert_passwd_equal(tctx, &pwd[i], &pwd3, + "getpwent_r and getpwnam gave different results"), + __location__); torture_assert(tctx, test_getpwuid(tctx, pwd[i].pw_uid, &pwd4), "failed to call getpwuid for enumerated user"); - torture_assert_passwd_equal(tctx, &pwd[i], &pwd4, - "getpwent_r and getpwuid gave different results"); - torture_assert_passwd_equal(tctx, &pwd3, &pwd4, - "getpwnam and getpwuid gave different results"); + torture_assert(tctx, torture_assert_passwd_equal(tctx, &pwd[i], &pwd4, + "getpwent_r and getpwuid gave different results"), + __location__); + torture_assert(tctx, torture_assert_passwd_equal(tctx, &pwd3, &pwd4, + "getpwnam and getpwuid gave different results"), + __location__); } return true; @@ -554,12 +581,8 @@ static bool torture_assert_group_equal(struct torture_context *tctx, torture_assert_str_equal(tctx, g1->gr_name, g2->gr_name, comment); torture_assert_str_equal(tctx, g1->gr_passwd, g2->gr_passwd, comment); torture_assert_int_equal(tctx, g1->gr_gid, g2->gr_gid, comment); - if (g1->gr_mem && !g2->gr_mem) { - return false; - } - if (!g1->gr_mem && g2->gr_mem) { - return false; - } + torture_assert(tctx, !(g1->gr_mem && !g2->gr_mem), __location__); + torture_assert(tctx, !(!g1->gr_mem && g2->gr_mem), __location__); if (!g1->gr_mem && !g2->gr_mem) { return true; } @@ -582,14 +605,17 @@ static bool test_group(struct torture_context *tctx) for (i=0; i < num_grp; i++) { torture_assert(tctx, test_getgrnam(tctx, grp[i].gr_name, &grp1), "failed to call getgrnam for enumerated user"); - torture_assert_group_equal(tctx, &grp[i], &grp1, - "getgrent and getgrnam gave different results"); + torture_assert(tctx, torture_assert_group_equal(tctx, &grp[i], &grp1, + "getgrent and getgrnam gave different results"), + __location__); torture_assert(tctx, test_getgrgid(tctx, grp[i].gr_gid, &grp2), "failed to call getgrgid for enumerated user"); - torture_assert_group_equal(tctx, &grp[i], &grp2, - "getgrent and getgrgid gave different results"); - torture_assert_group_equal(tctx, &grp1, &grp2, - "getgrnam and getgrgid gave different results"); + torture_assert(tctx, torture_assert_group_equal(tctx, &grp[i], &grp2, + "getgrent and getgrgid gave different results"), + __location__); + torture_assert(tctx, torture_assert_group_equal(tctx, &grp1, &grp2, + "getgrnam and getgrgid gave different results"), + __location__); } return true; @@ -607,14 +633,17 @@ static bool test_group_r(struct torture_context *tctx) for (i=0; i < num_grp; i++) { torture_assert(tctx, test_getgrnam_r(tctx, grp[i].gr_name, &grp1), "failed to call getgrnam_r for enumerated user"); - torture_assert_group_equal(tctx, &grp[i], &grp1, - "getgrent_r and getgrnam_r gave different results"); + torture_assert(tctx, torture_assert_group_equal(tctx, &grp[i], &grp1, + "getgrent_r and getgrnam_r gave different results"), + __location__); torture_assert(tctx, test_getgrgid_r(tctx, grp[i].gr_gid, &grp2), "failed to call getgrgid_r for enumerated user"); - torture_assert_group_equal(tctx, &grp[i], &grp2, - "getgrent_r and getgrgid_r gave different results"); - torture_assert_group_equal(tctx, &grp1, &grp2, - "getgrnam_r and getgrgid_r gave different results"); + torture_assert(tctx, torture_assert_group_equal(tctx, &grp[i], &grp2, + "getgrent_r and getgrgid_r gave different results"), + __location__); + torture_assert(tctx, torture_assert_group_equal(tctx, &grp1, &grp2, -- Samba Shared Repository