From 724cab4d08d631c0afaac5e77356ca5336562eb0 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 6 Apr 1998 18:14:56 +0000 Subject: loadparm.c: Cause IPC$ comment to be evaluated at runtime, rather than load time (patch from "Marty Leisner" . server.c: Patch from Josef Hinteregger - string could be overwritten when find_service() called recursively. Jeremy. (This used to be commit cf15b3bd74a262e7af3d739a83ef7b43df4935e5) --- source3/smbd/server.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'source3/smbd') diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 8166021fc2..d0b0304430 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -2214,8 +2214,16 @@ int find_service(char *service) /* just possibly it's a default service? */ if (iService < 0) { - char *defservice = lp_defaultservice(); - if (defservice && *defservice && !strequal(defservice,service)) { + char *pdefservice = lp_defaultservice(); + if (pdefservice && *pdefservice && !strequal(pdefservice,service)) { + /* + * We need to do a local copy here as lp_defaultservice() + * returns one of the rotating lp_string buffers that + * could get overwritten by the recursive find_service() call + * below. Fix from Josef Hinteregger . + */ + pstring defservice; + pstrcpy(defservice, pdefservice); iService = find_service(defservice); if (iService >= 0) { string_sub(service,"_","/"); -- cgit