[SCM] Samba Shared Repository - branch master updated
Jeremy Allison
jra at samba.org
Tue Apr 1 18:37:04 MDT 2014
The branch, master has been updated
via 0143427 libsmbclient: Wrap more function calls in talloc_stackframe() to protect against talloc_tos() calls
via 8f3a516 pam_smbpass: Wrap calls in talloc_stackframe() to avoid warnings about leaking memory
via bc5bd40 libsmb: Provide a talloc_stackframe() to external users of libsmb_setget.c
via 1bdc635 selftest: Remove reduction in time window in delaywrite test
from 547f682 s3-smbd: Align debug level for the same information.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 014342746f5af1aaaf1c2f8b44098c3a944e4f0a
Author: Andrew Bartlett <abartlet at samba.org>
Date: Tue Apr 1 17:03:34 2014 +1300
libsmbclient: Wrap more function calls in talloc_stackframe() to protect against talloc_tos() calls
BUG: https://bugzilla.samba.org/show_bug.cgi?id=8449
Signed-off-by: Andrew Bartlett <abartlet at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
Autobuild-User(master): Jeremy Allison <jra at samba.org>
Autobuild-Date(master): Wed Apr 2 02:36:08 CEST 2014 on sn-devel-104
commit 8f3a516acb8c95cd6d88bf80abd495ac0cafaae3
Author: Andrew Bartlett <abartlet at samba.org>
Date: Tue Apr 1 17:01:26 2014 +1300
pam_smbpass: Wrap calls in talloc_stackframe() to avoid warnings about leaking memory
Any code in source3 is permitted to use talloc_tos() at any point, so we must protect all the library interfaces
against memory leaks this way.
Andrew Bartlett
Signed-off-by: Andrew Bartlett <abartlet at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit bc5bd4010e8fedf19047ed6f7a793cd373f9f14f
Author: Andrew Bartlett <abartlet at samba.org>
Date: Mon Mar 31 10:19:58 2014 +1300
libsmb: Provide a talloc_stackframe() to external users of libsmb_setget.c
Signed-off-by: Andrew Bartlett <abartlet at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 1bdc635f1d51fb6d39623b0cd228091673e15bd7
Author: Andrew Bartlett <abartlet at samba.org>
Date: Thu Mar 27 14:52:26 2014 +1300
selftest: Remove reduction in time window in delaywrite test
This causes flakey autobuilds from time to time.
The reduction in the time window to 30% was added in:
commit c2df97f57ce205935c37cd5a90cfeddb129cd92b
Author: Jeremy Allison <jra at samba.org>
Date: Thu Nov 5 15:37:26 2009 -0800
Fix up some of the timing constants for DELAYWRITE. Add some extra tests up test_delayed_write_update6
to investigate what happens to a sticky write handle after a second handle close.
Jeremy.
The original reduction to 75% was set in the new code
commit 0d0fddf8ae856efd7ffb07ba8fa32d2f55d3f9c0
Author: Jeremy Allison <jra at samba.org>
Date: Fri Sep 5 14:24:36 2008 -0700
Added tests that show that write time update is immediate
when changing file size using SMBwrite of size zero,
SET_END_OF_FILE, or SET_ALLOCATION_SIZE - no 2 second
delay in these cases.
Jeremy.
(This used to be commit 3aa7523d7750fe30d1e6bb5a75ac42b681b9e493)
and in:
commit edb3a83a069d39e123f18de098cfaab6deb16729
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Apr 8 10:25:51 2008 +0200
BASE-DELAYWRITE: use timeval_* and make it possible to spefic the writetime update delay
metze
(This used to be commit 751ab2992afd13548af6e67a03d3ced566cb136f)
Change-Id: I8ff9fb8a8b66308f6d784351a0f43b5b234889d1
Signed-off-by: Andrew Bartlett <abartlet at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
-----------------------------------------------------------------------
Summary of changes:
source3/libsmb/libsmb_context.c | 17 +++++++++++++++++
source3/libsmb/libsmb_setget.c | 17 +++++++++++++++--
source3/pam_smbpass/pam_smb_acct.c | 9 +++++++++
source3/pam_smbpass/pam_smb_auth.c | 7 +++++++
source3/pam_smbpass/pam_smb_passwd.c | 16 +++++++++++++++-
source4/torture/basic/delaywrite.c | 20 ++++++++++----------
6 files changed, 73 insertions(+), 13 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/libsmb/libsmb_context.c b/source3/libsmb/libsmb_context.c
index c2b88f5..ffa4d2d 100644
--- a/source3/libsmb/libsmb_context.c
+++ b/source3/libsmb/libsmb_context.c
@@ -560,6 +560,7 @@ SMBCCTX *
smbc_init_context(SMBCCTX *context)
{
int pid;
+ TALLOC_CTX *frame;
if (!context) {
errno = EBADF;
@@ -571,11 +572,14 @@ smbc_init_context(SMBCCTX *context)
return NULL;
}
+ frame = talloc_stackframe();
+
if ((!smbc_getFunctionAuthData(context) &&
!smbc_getFunctionAuthDataWithContext(context)) ||
smbc_getDebug(context) < 0 ||
smbc_getDebug(context) > 100) {
+ TALLOC_FREE(frame);
errno = EINVAL;
return NULL;
@@ -594,6 +598,7 @@ smbc_init_context(SMBCCTX *context)
}
if (!user) {
+ TALLOC_FREE(frame);
errno = ENOMEM;
return NULL;
}
@@ -602,6 +607,7 @@ smbc_init_context(SMBCCTX *context)
SAFE_FREE(user);
if (!smbc_getUser(context)) {
+ TALLOC_FREE(frame);
errno = ENOMEM;
return NULL;
}
@@ -624,6 +630,7 @@ smbc_init_context(SMBCCTX *context)
pid = getpid();
netbios_name = (char *)SMB_MALLOC(17);
if (!netbios_name) {
+ TALLOC_FREE(frame);
errno = ENOMEM;
return NULL;
}
@@ -632,6 +639,7 @@ smbc_init_context(SMBCCTX *context)
}
if (!netbios_name) {
+ TALLOC_FREE(frame);
errno = ENOMEM;
return NULL;
}
@@ -640,6 +648,7 @@ smbc_init_context(SMBCCTX *context)
SAFE_FREE(netbios_name);
if (!smbc_getNetbiosName(context)) {
+ TALLOC_FREE(frame);
errno = ENOMEM;
return NULL;
}
@@ -659,6 +668,7 @@ smbc_init_context(SMBCCTX *context)
}
if (!workgroup) {
+ TALLOC_FREE(frame);
errno = ENOMEM;
return NULL;
}
@@ -667,6 +677,7 @@ smbc_init_context(SMBCCTX *context)
SAFE_FREE(workgroup);
if (!smbc_getWorkgroup(context)) {
+ TALLOC_FREE(frame);
errno = ENOMEM;
return NULL;
}
@@ -692,6 +703,7 @@ smbc_init_context(SMBCCTX *context)
smb_panic("error unlocking 'initialized_ctx_count'");
}
+ TALLOC_FREE(frame);
return context;
}
@@ -727,12 +739,15 @@ void smbc_set_credentials_with_fallback(SMBCCTX *context,
smbc_bool use_kerberos = false;
const char *signing_state = "off";
struct user_auth_info *auth_info = NULL;
+ TALLOC_CTX *frame;
if (! context) {
return;
}
+ frame = talloc_stackframe();
+
if (! workgroup || ! *workgroup) {
workgroup = smbc_getWorkgroup(context);
}
@@ -749,6 +764,7 @@ void smbc_set_credentials_with_fallback(SMBCCTX *context,
if (! auth_info) {
DEBUG(0, ("smbc_set_credentials_with_fallback: allocation fail\n"));
+ TALLOC_FREE(frame);
return;
}
@@ -777,4 +793,5 @@ void smbc_set_credentials_with_fallback(SMBCCTX *context,
TALLOC_FREE(context->internal->auth_info);
context->internal->auth_info = auth_info;
+ TALLOC_FREE(frame);
}
diff --git a/source3/libsmb/libsmb_setget.c b/source3/libsmb/libsmb_setget.c
index b8adcca..3255b52 100644
--- a/source3/libsmb/libsmb_setget.c
+++ b/source3/libsmb/libsmb_setget.c
@@ -91,9 +91,11 @@ void
smbc_setDebug(SMBCCTX *c, int debug)
{
char buf[32];
+ TALLOC_CTX *frame = talloc_stackframe();
snprintf(buf, sizeof(buf), "%d", debug);
c->debug = debug;
lp_set_cmdline("log level", buf);
+ TALLOC_FREE(frame);
}
/**
@@ -139,10 +141,15 @@ smbc_setPort(SMBCCTX *c, uint16_t port)
smbc_bool
smbc_getOptionDebugToStderr(SMBCCTX *c)
{
+ smbc_bool ret;
+ TALLOC_CTX *frame = talloc_stackframe();
+
/* Because this is a global concept, it is better to check
* what is really set, rather than what we wanted set
* (particularly as you cannot go back to stdout). */
- return debug_get_output_is_stderr();
+ ret = debug_get_output_is_stderr();
+ TALLOC_FREE(frame);
+ return ret;
}
/** Set whether to log to standard error instead of standard output.
@@ -154,6 +161,7 @@ smbc_getOptionDebugToStderr(SMBCCTX *c)
void
smbc_setOptionDebugToStderr(SMBCCTX *c, smbc_bool b)
{
+ TALLOC_CTX *frame = talloc_stackframe();
if (b) {
/*
* We do not have a unique per-thread debug state? For
@@ -164,6 +172,7 @@ smbc_setOptionDebugToStderr(SMBCCTX *c, smbc_bool b)
*/
setup_logging("libsmbclient", DEBUG_STDERR);
}
+ TALLOC_FREE(frame);
}
/**
@@ -498,7 +507,11 @@ smbc_setOptionUseNTHash(SMBCCTX *c, smbc_bool b)
smbc_get_auth_data_fn
smbc_getFunctionAuthData(SMBCCTX *c)
{
- return c->callbacks.auth_fn;
+ smbc_get_auth_data_fn ret;
+ TALLOC_CTX *frame = talloc_stackframe();
+ ret = c->callbacks.auth_fn;
+ TALLOC_FREE(frame);
+ return ret;
}
/** Set the function for obtaining authentication data */
diff --git a/source3/pam_smbpass/pam_smb_acct.c b/source3/pam_smbpass/pam_smb_acct.c
index 60acd3c..bd4615f 100644
--- a/source3/pam_smbpass/pam_smb_acct.c
+++ b/source3/pam_smbpass/pam_smb_acct.c
@@ -55,6 +55,7 @@ int pam_sm_acct_mgmt( pam_handle_t *pamh, int flags,
const char *name;
struct samu *sampass = NULL;
void (*oldsig_handler)(int);
+ TALLOC_CTX *frame = talloc_stackframe();
/* Samba initialization. */
load_case_tables_library();
@@ -68,6 +69,7 @@ int pam_sm_acct_mgmt( pam_handle_t *pamh, int flags,
if (on( SMB_DEBUG, ctrl )) {
_log_err(pamh, LOG_DEBUG, "acct: could not identify user" );
}
+ TALLOC_FREE(frame);
return retval;
}
if (on( SMB_DEBUG, ctrl )) {
@@ -76,6 +78,7 @@ int pam_sm_acct_mgmt( pam_handle_t *pamh, int flags,
if (geteuid() != 0) {
_log_err(pamh, LOG_DEBUG, "Cannot access samba password database, not running as root.");
+ TALLOC_FREE(frame);
return PAM_AUTHINFO_UNAVAIL;
}
@@ -85,6 +88,7 @@ int pam_sm_acct_mgmt( pam_handle_t *pamh, int flags,
if (!initialize_password_db(True, NULL)) {
_log_err(pamh, LOG_ALERT, "Cannot access samba password database" );
CatchSignal(SIGPIPE, oldsig_handler);
+ TALLOC_FREE(frame);
return PAM_AUTHINFO_UNAVAIL;
}
@@ -93,18 +97,21 @@ int pam_sm_acct_mgmt( pam_handle_t *pamh, int flags,
if (!(sampass = samu_new( NULL ))) {
CatchSignal(SIGPIPE, oldsig_handler);
/* malloc fail. */
+ TALLOC_FREE(frame);
return nt_status_to_pam(NT_STATUS_NO_MEMORY);
}
if (!pdb_getsampwnam(sampass, name )) {
_log_err(pamh, LOG_DEBUG, "acct: could not identify user");
CatchSignal(SIGPIPE, oldsig_handler);
+ TALLOC_FREE(frame);
return PAM_USER_UNKNOWN;
}
/* check for lookup failure */
if (!strlen(pdb_get_username(sampass)) ) {
CatchSignal(SIGPIPE, oldsig_handler);
+ TALLOC_FREE(frame);
return PAM_USER_UNKNOWN;
}
@@ -118,12 +125,14 @@ int pam_sm_acct_mgmt( pam_handle_t *pamh, int flags,
"please see your system administrator." );
CatchSignal(SIGPIPE, oldsig_handler);
+ TALLOC_FREE(frame);
return PAM_ACCT_EXPIRED;
}
/* TODO: support for expired passwords. */
CatchSignal(SIGPIPE, oldsig_handler);
+ TALLOC_FREE(frame);
return PAM_SUCCESS;
}
diff --git a/source3/pam_smbpass/pam_smb_auth.c b/source3/pam_smbpass/pam_smb_auth.c
index 4270bcc..ac5ef3f 100644
--- a/source3/pam_smbpass/pam_smb_auth.c
+++ b/source3/pam_smbpass/pam_smb_auth.c
@@ -50,6 +50,7 @@ do { \
pam_set_data( pamh, "smb_setcred_return" \
, (void *) ret_data, NULL ); \
} \
+ TALLOC_FREE(frame); \
return retval; \
} while (0)
@@ -75,6 +76,7 @@ int pam_sm_authenticate(pam_handle_t *pamh, int flags,
const char *name;
void (*oldsig_handler)(int) = NULL;
bool found;
+ TALLOC_CTX *frame = talloc_stackframe();
/* Points to memory managed by the PAM library. Do not free. */
char *p = NULL;
@@ -195,6 +197,7 @@ static int _smb_add_user(pam_handle_t *pamh, unsigned int ctrl,
char *msg_str = NULL;
const char *pass = NULL;
int retval;
+ TALLOC_CTX *frame = talloc_stackframe();
/* Get the authtok; if we don't have one, silently fail. */
retval = _pam_get_item( pamh, PAM_AUTHTOK, &pass );
@@ -202,8 +205,10 @@ static int _smb_add_user(pam_handle_t *pamh, unsigned int ctrl,
if (retval != PAM_SUCCESS) {
_log_err(pamh, LOG_ALERT
, "pam_get_item returned error to pam_sm_authenticate" );
+ TALLOC_FREE(frame);
return PAM_AUTHTOK_RECOVER_ERR;
} else if (pass == NULL) {
+ TALLOC_FREE(frame);
return PAM_AUTHTOK_RECOVER_ERR;
}
@@ -220,6 +225,7 @@ static int _smb_add_user(pam_handle_t *pamh, unsigned int ctrl,
SAFE_FREE(err_str);
SAFE_FREE(msg_str);
+ TALLOC_FREE(frame);
return PAM_IGNORE;
} else {
/* mimick 'update encrypted' as long as the 'no pw req' flag is not set */
@@ -237,6 +243,7 @@ static int _smb_add_user(pam_handle_t *pamh, unsigned int ctrl,
SAFE_FREE(err_str);
SAFE_FREE(msg_str);
pass = NULL;
+ TALLOC_FREE(frame);
return PAM_IGNORE;
}
diff --git a/source3/pam_smbpass/pam_smb_passwd.c b/source3/pam_smbpass/pam_smb_passwd.c
index ce0b118..dedfda0 100644
--- a/source3/pam_smbpass/pam_smb_passwd.c
+++ b/source3/pam_smbpass/pam_smb_passwd.c
@@ -103,6 +103,7 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
const char *user;
char *pass_old;
char *pass_new;
+ TALLOC_CTX *frame = talloc_stackframe();
/* Samba initialization. */
load_case_tables_library();
@@ -119,6 +120,7 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
if (on( SMB_DEBUG, ctrl )) {
_log_err(pamh, LOG_DEBUG, "password: could not identify user");
}
+ TALLOC_FREE(frame);
return retval;
}
if (on( SMB_DEBUG, ctrl )) {
@@ -127,6 +129,7 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
if (geteuid() != 0) {
_log_err(pamh, LOG_DEBUG, "Cannot access samba password database, not running as root.");
+ TALLOC_FREE(frame);
return PAM_AUTHINFO_UNAVAIL;
}
@@ -137,19 +140,22 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
if (!initialize_password_db(False, NULL)) {
_log_err(pamh, LOG_ALERT, "Cannot access samba password database" );
CatchSignal(SIGPIPE, oldsig_handler);
+ TALLOC_FREE(frame);
return PAM_AUTHINFO_UNAVAIL;
}
/* obtain user record */
if ( !(sampass = samu_new( NULL )) ) {
CatchSignal(SIGPIPE, oldsig_handler);
+ TALLOC_FREE(frame);
return nt_status_to_pam(NT_STATUS_NO_MEMORY);
}
if (!pdb_getsampwnam(sampass,user)) {
_log_err(pamh, LOG_ALERT, "Failed to find entry for user %s.", user);
CatchSignal(SIGPIPE, oldsig_handler);
- return PAM_USER_UNKNOWN;
+ TALLOC_FREE(frame);
+ return PAM_USER_UNKNOWN;
}
if (on( SMB_DEBUG, ctrl )) {
_log_err(pamh, LOG_DEBUG, "Located account for %s", user);
@@ -167,6 +173,7 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
TALLOC_FREE(sampass);
CatchSignal(SIGPIPE, oldsig_handler);
+ TALLOC_FREE(frame);
return PAM_SUCCESS;
}
@@ -179,6 +186,7 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
_log_err(pamh, LOG_CRIT, "password: out of memory");
TALLOC_FREE(sampass);
CatchSignal(SIGPIPE, oldsig_handler);
+ TALLOC_FREE(frame);
return PAM_BUF_ERR;
}
@@ -192,6 +200,7 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
"password - (old) token not obtained");
TALLOC_FREE(sampass);
CatchSignal(SIGPIPE, oldsig_handler);
+ TALLOC_FREE(frame);
return retval;
}
@@ -207,6 +216,7 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
pass_old = NULL;
TALLOC_FREE(sampass);
CatchSignal(SIGPIPE, oldsig_handler);
+ TALLOC_FREE(frame);
return retval;
} else if (flags & PAM_UPDATE_AUTHTOK) {
@@ -237,6 +247,7 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
_log_err(pamh, LOG_NOTICE, "password: user not authenticated");
TALLOC_FREE(sampass);
CatchSignal(SIGPIPE, oldsig_handler);
+ TALLOC_FREE(frame);
return retval;
}
@@ -265,6 +276,7 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
pass_old = NULL; /* tidy up */
TALLOC_FREE(sampass);
CatchSignal(SIGPIPE, oldsig_handler);
+ TALLOC_FREE(frame);
return retval;
}
@@ -285,6 +297,7 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
pass_new = pass_old = NULL; /* tidy up */
TALLOC_FREE(sampass);
CatchSignal(SIGPIPE, oldsig_handler);
+ TALLOC_FREE(frame);
return retval;
}
@@ -334,6 +347,7 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
TALLOC_FREE(sampass);
CatchSignal(SIGPIPE, oldsig_handler);
+ TALLOC_FREE(frame);
return retval;
}
diff --git a/source4/torture/basic/delaywrite.c b/source4/torture/basic/delaywrite.c
index da03b72..5e05468 100644
--- a/source4/torture/basic/delaywrite.c
+++ b/source4/torture/basic/delaywrite.c
@@ -96,7 +96,7 @@ static bool test_delayed_write_update(struct torture_context *tctx, struct smbcl
nt_time_string(tctx, finfo2.basic_info.out.write_time));
if (finfo1.basic_info.out.write_time != finfo2.basic_info.out.write_time) {
double diff = timeval_elapsed(&start);
- if (diff < (TIMEDELAY_SECS * sec * 0.3)) { /* 0.3 to cope with vmware timing */
+ if (diff < (TIMEDELAY_SECS * sec)) {
torture_comment(tctx, "Server updated write_time after %.2f seconds"
"(1 sec == %.2f)(wrong!)\n",
diff, sec);
@@ -212,7 +212,7 @@ static bool test_delayed_write_update1(struct torture_context *tctx, struct smbc
nt_time_string(tctx, finfo2.all_info.out.write_time));
if (finfo1.all_info.out.write_time != finfo2.all_info.out.write_time) {
double diff = timeval_elapsed(&start);
- if (diff > (0.25 * sec * 0.75)) { /* 0.75 to cope with vmware timing */
+ if (diff > (0.25 * sec)) {
torture_comment(tctx, "After SMBwrite truncate "
"server updated write_time after %.2f seconds"
"(1 sec == %.2f)(wrong!)\n",
@@ -397,7 +397,7 @@ static bool test_delayed_write_update1a(struct torture_context *tctx, struct smb
nt_time_string(tctx, finfo2.all_info.out.write_time));
if (finfo1.all_info.out.write_time != finfo2.all_info.out.write_time) {
double diff = timeval_elapsed(&start);
- if (diff > (0.25 * sec * 0.75)) { /* 0.75 to cope with vmware timing */
+ if (diff > (0.25 * sec)) {
torture_comment(tctx, "After SMBwrite truncate "
"server updated write_time after %.2f seconds"
"(1 sec == %.2f)(wrong!)\n",
@@ -572,7 +572,7 @@ static bool test_delayed_write_update1b(struct torture_context *tctx, struct smb
nt_time_string(tctx, finfo2.all_info.out.write_time));
if (finfo1.all_info.out.write_time != finfo2.all_info.out.write_time) {
double diff = timeval_elapsed(&start);
- if (diff > (0.25 * sec * 0.75)) { /* 0.75 to cope with vmware timing */
+ if (diff > (0.25 * sec)) {
torture_result(tctx, TORTURE_FAIL,
"After SET_END_OF_FILE truncate "
"server updated write_time after %.2f seconds"
@@ -751,7 +751,7 @@ static bool test_delayed_write_update1c(struct torture_context *tctx, struct smb
nt_time_string(tctx, finfo2.all_info.out.write_time));
if (finfo1.all_info.out.write_time != finfo2.all_info.out.write_time) {
double diff = timeval_elapsed(&start);
- if (diff > (0.25 * sec * 0.75)) { /* 0.75 to cope with vmware timing */
+ if (diff > (0.25 * sec)) {
torture_comment(tctx, "After SET_ALLOCATION_INFO truncate "
"server updated write_time after %.2f seconds"
"(1 sec == %.2f)(wrong!)\n",
@@ -1162,7 +1162,7 @@ static bool test_delayed_write_update2(struct torture_context *tctx, struct smbc
nt_time_string(tctx, finfo2.basic_info.out.write_time));
if (finfo1.basic_info.out.write_time != finfo2.basic_info.out.write_time) {
double diff = timeval_elapsed(&start);
- if (diff < (TIMEDELAY_SECS * sec * 0.3)) { /* 0.3 to cope with vmware timing */
+ if (diff < (TIMEDELAY_SECS * sec)) {
torture_comment(tctx, "Server updated write_time after %.2f seconds"
"(1sec == %.2f) (wrong!)\n",
diff, sec);
@@ -1543,7 +1543,7 @@ static bool test_delayed_write_update3(struct torture_context *tctx,
if (finfo1.basic_info.out.write_time > finfo0.basic_info.out.write_time) {
double diff = timeval_elapsed(&start);
- if (diff < (TIMEDELAY_SECS * sec * 0.3)) { /* 0.3 to cope with vmware timing */
+ if (diff < (TIMEDELAY_SECS * sec)) {
torture_comment(tctx, "Server updated write_time after %.2f seconds "
"(1sec == %.2f) (wrong!)\n",
diff, sec);
@@ -1705,7 +1705,7 @@ static bool test_delayed_write_update3a(struct torture_context *tctx,
if (finfo1.basic_info.out.write_time > finfo0.basic_info.out.write_time) {
double diff = timeval_elapsed(&start);
- if (diff < (TIMEDELAY_SECS * sec * 0.3)) { /* 0.3 to cope with vmware timing */
+ if (diff < (TIMEDELAY_SECS * sec)) {
--
Samba Shared Repository
More information about the samba-cvs
mailing list