[SCM] Samba Shared Repository - branch master updated
Günther Deschner
gd at samba.org
Wed Apr 15 10:56:02 MDT 2015
The branch, master has been updated
via a65e22c spoolss: cache_key handle allocation failures early
from e8951eb torture: Free the temporary memory context
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit a65e22c6bdf32c2bb014a2ed52794590a49dda34
Author: David Disseldorp <ddiss at samba.org>
Date: Wed Apr 15 15:48:06 2015 +0200
spoolss: cache_key handle allocation failures early
On cache_key allocation failure, set_printer_hnd_name() currently
stumbles through the rest of the function, and includes extra logic to
handle a NULL key later on.
Handling the allocation failure early makes sense, and also allows for
the NULL key checks to be removed.
Signed-off-by: David Disseldorp <ddiss at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
Autobuild-User(master): Günther Deschner <gd at samba.org>
Autobuild-Date(master): Wed Apr 15 18:55:50 CEST 2015 on sn-devel-104
-----------------------------------------------------------------------
Summary of changes:
source3/rpc_server/spoolss/srv_spoolss_nt.c | 28 ++++++++++++----------------
1 file changed, 12 insertions(+), 16 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c
index 65a805a..482f711 100644
--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c
+++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c
@@ -622,18 +622,18 @@ static WERROR set_printer_hnd_name(TALLOC_CTX *mem_ctx,
found = true;
}
+ cache_key = talloc_asprintf(talloc_tos(), "PRINTERNAME/%s", aprinter);
+ if (cache_key == NULL) {
+ return WERR_NOMEM;
+ }
+
/*
* With hundreds of printers, the "for" loop iterating all
* shares can be quite expensive, as it is done on every
* OpenPrinter. The loop maps "aprinter" to "sname", the
* result of which we cache in gencache.
*/
-
- cache_key = talloc_asprintf(talloc_tos(), "PRINTERNAME/%s",
- aprinter);
- if ((cache_key != NULL) &&
- gencache_get(cache_key, talloc_tos(), &tmp, NULL)) {
-
+ if (gencache_get(cache_key, talloc_tos(), &tmp, NULL)) {
found = (strcmp(tmp, printer_not_found) != 0);
if (!found) {
DEBUG(4, ("Printer %s not found\n", aprinter));
@@ -702,20 +702,16 @@ static WERROR set_printer_hnd_name(TALLOC_CTX *mem_ctx,
TALLOC_FREE(info2);
}
- if ( !found ) {
- if (cache_key != NULL) {
- gencache_set(cache_key, printer_not_found,
- time(NULL)+300);
- TALLOC_FREE(cache_key);
- }
+ if (!found) {
+ gencache_set(cache_key, printer_not_found,
+ time_mono(NULL) + 300);
+ TALLOC_FREE(cache_key);
DEBUGADD(4,("Printer not found\n"));
return WERR_INVALID_PRINTER_NAME;
}
- if (cache_key != NULL) {
- gencache_set(cache_key, sname, time(NULL)+300);
- TALLOC_FREE(cache_key);
- }
+ gencache_set(cache_key, sname, time_mono(NULL) + 300);
+ TALLOC_FREE(cache_key);
DEBUGADD(4,("set_printer_hnd_name: Printer found: %s -> %s\n", aprinter, sname));
--
Samba Shared Repository
More information about the samba-cvs
mailing list