summaryrefslogtreecommitdiff
path: root/source3/libsmb/libsmb_setget.c
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2014-03-31 10:19:58 +1300
committerKarolin Seeger <kseeger@samba.org>2014-07-15 12:46:12 +0200
commit93c1a27fe2e64647521c4a5dbd115b77bfc8328c (patch)
tree5eed7e5d89ac0333d879732bd258690b423e6a42 /source3/libsmb/libsmb_setget.c
parent5c503dd2198122e51854102e91ea61dd8bb24148 (diff)
downloadsamba-93c1a27fe2e64647521c4a5dbd115b77bfc8328c.tar.gz
libsmb: Provide a talloc_stackframe() to external users of libsmb_setget.c
Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org> (cherry picked from commit bc5bd4010e8fedf19047ed6f7a793cd373f9f14f) The last 3 patches address bug #8449 (simple use case results in "no talloc stackframe around, leaking memory" error).
Diffstat (limited to 'source3/libsmb/libsmb_setget.c')
-rw-r--r--source3/libsmb/libsmb_setget.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/source3/libsmb/libsmb_setget.c b/source3/libsmb/libsmb_setget.c
index b8adcca18b..3255b522bb 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 */