diff --git a/source/param/loadparm.c b/source/param/loadparm.c index 4fc0c06..71a0e7b 100644 --- a/source/param/loadparm.c +++ b/source/param/loadparm.c @@ -2655,6 +2655,11 @@ BOOL lp_add_home(const char *pszHomename, int iDefaultService, int i; pstring newHomedir; + if (pszHomename == NULL || user == NULL || pszHomedir == NULL || + pszHomedir[0] == '\0') { + return False; + } + i = add_a_service(ServicePtrs[iDefaultService], pszHomename); if (i < 0) @@ -4135,7 +4140,7 @@ static void lp_add_auto_services(char *str) if (lp_servicenumber(p) >= 0) continue; - if (home && homes >= 0) + if (home && home[0] && homes >= 0) lp_add_home(p, homes, p, home); } SAFE_FREE(s); diff --git a/source/smbd/service.c b/source/smbd/service.c index bfe9649..390e606 100644 --- a/source/smbd/service.c +++ b/source/smbd/service.c @@ -224,7 +224,7 @@ int add_home_service(const char *service, const char *username, const char *home { int iHomeService; - if (!service || !homedir) + if (!service || !homedir || homedir[0] == '\0') return -1; if ((iHomeService = lp_servicenumber(HOMES_NAME)) < 0) @@ -801,6 +801,15 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser, get_current_username(), current_user_info.domain, s, sizeof(s)); + + if (s[0] == '\0') { + DEBUG(6, ("service [%s] did not resolve to a path\n", + lp_servicename(snum))); + conn_free(conn); + *status = NT_STATUS_BAD_NETWORK_NAME; + return NULL; + } + set_conn_connectpath(conn,s); DEBUG(3,("Connect path is '%s' for service [%s]\n",s, lp_servicename(snum)));