diff options
-rw-r--r-- | source3/lib/substitute.c | 10 | ||||
-rw-r--r-- | source3/lib/time.c | 18 | ||||
-rw-r--r-- | source3/lib/util.c | 76 | ||||
-rw-r--r-- | source3/registry/reg_objects.c | 4 | ||||
-rw-r--r-- | source3/registry/reg_perfcount.c | 4 | ||||
-rw-r--r-- | source3/registry/reg_util.c | 4 | ||||
-rw-r--r-- | source3/rpc_client/cli_svcctl.c | 4 | ||||
-rw-r--r-- | source3/services/services_db.c | 4 | ||||
-rw-r--r-- | source3/smbd/lanman.c | 12 |
9 files changed, 57 insertions, 79 deletions
diff --git a/source3/lib/substitute.c b/source3/lib/substitute.c index 64b343fabb..955557f40c 100644 --- a/source3/lib/substitute.c +++ b/source3/lib/substitute.c @@ -263,7 +263,7 @@ struct api_longvar { char* (*fn)( void ); }; -struct api_longvar longvar_table[] = { +static struct api_longvar longvar_table[] = { { "DomainSID", longvar_domainsid }, { NULL, NULL } }; @@ -339,7 +339,7 @@ static char *realloc_expand_longvar(char *str, char *p) static char *automount_path(const char *user_name) { - static pstring server_path; + pstring server_path; /* use the passwd entry as the default */ /* this will be the default if WITH_AUTOMOUNT is not used or fails */ @@ -368,7 +368,7 @@ static char *automount_path(const char *user_name) DEBUG(4,("Home server path: %s\n", server_path)); - return server_path; + return talloc_strdup(talloc_tos(), server_path); } /******************************************************************* @@ -379,7 +379,7 @@ static char *automount_path(const char *user_name) static const char *automount_server(const char *user_name) { - static pstring server_name; + pstring server_name; const char *local_machine_name = get_local_machine_name(); /* use the local machine name as the default */ @@ -405,7 +405,7 @@ static const char *automount_server(const char *user_name) DEBUG(4,("Home server: %s\n", server_name)); - return server_name; + return talloc_strdup(talloc_tos(), server_name); } /**************************************************************************** diff --git a/source3/lib/time.c b/source3/lib/time.c index 9d874c21fa..35d10186be 100644 --- a/source3/lib/time.c +++ b/source3/lib/time.c @@ -303,13 +303,13 @@ time_t pull_dos_date3(const uint8_t *date_ptr, int zone_offset) char *http_timestring(time_t t) { - static fstring buf; + fstring buf; struct tm *tm = localtime(&t); if (t == TIME_T_MAX) { - slprintf(buf,sizeof(buf)-1,"never"); + fstrcpy(buf, "never"); } else if (!tm) { - slprintf(buf,sizeof(buf)-1,"%ld seconds since the Epoch",(long)t); + fstr_sprintf(buf, "%ld seconds since the Epoch", (long)t); } else { #ifndef HAVE_STRFTIME const char *asct = asctime(tm); @@ -321,7 +321,7 @@ char *http_timestring(time_t t) strftime(buf, sizeof(buf)-1, "%a, %d %b %Y %H:%M:%S %Z", tm); #endif /* !HAVE_STRFTIME */ } - return buf; + return talloc_strdup(talloc_tos(), buf); } @@ -689,7 +689,7 @@ int set_server_zone_offset(time_t t) char *current_timestring(BOOL hires) { - static fstring TimeBuf; + fstring TimeBuf; struct timeval tp; time_t t; struct tm *tm; @@ -739,7 +739,7 @@ char *current_timestring(BOOL hires) } #endif } - return(TimeBuf); + return talloc_strdup(talloc_tos(), TimeBuf); } @@ -1423,8 +1423,6 @@ const char *time_to_asc(const time_t t) const char *display_time(NTTIME nttime) { - static fstring string; - float high; float low; int sec; @@ -1452,8 +1450,8 @@ const char *display_time(NTTIME nttime) mins=(sec - (days*60*60*24) - (hours*60*60) ) / 60; secs=sec - (days*60*60*24) - (hours*60*60) - (mins*60); - fstr_sprintf(string, "%u days, %u hours, %u minutes, %u seconds", days, hours, mins, secs); - return (string); + return talloc_asprintf(talloc_tos(), "%u days, %u hours, %u minutes, " + "%u seconds", days, hours, mins, secs); } BOOL nt_time_is_set(const NTTIME *nt) diff --git a/source3/lib/util.c b/source3/lib/util.c index 3852fccdd1..5314239e07 100644 --- a/source3/lib/util.c +++ b/source3/lib/util.c @@ -456,7 +456,7 @@ SMB_OFF_T get_file_size(char *file_name) char *attrib_string(uint16 mode) { - static fstring attrstr; + fstring attrstr; attrstr[0] = 0; @@ -467,7 +467,7 @@ char *attrib_string(uint16 mode) if (mode & aSYSTEM) fstrcat(attrstr,"S"); if (mode & aRONLY) fstrcat(attrstr,"R"); - return(attrstr); + return talloc_strdup(talloc_tos(), attrstr); } /******************************************************************* @@ -1578,17 +1578,17 @@ BOOL process_exists_by_pid(pid_t pid) const char *uidtoname(uid_t uid) { - static fstring name; + fstring name; struct passwd *pass; - pass = getpwuid_alloc(NULL, uid); + pass = getpwuid_alloc(talloc_tos(), uid); if (pass) { fstrcpy(name, pass->pw_name); TALLOC_FREE(pass); } else { slprintf(name, sizeof(name) - 1, "%ld",(long int)uid); } - return name; + return talloc_strdup(talloc_tos(), name); } @@ -1598,14 +1598,17 @@ const char *uidtoname(uid_t uid) char *gidtoname(gid_t gid) { - static fstring name; + fstring name; struct group *grp; grp = getgrgid(gid); - if (grp) - return(grp->gr_name); - slprintf(name,sizeof(name) - 1, "%d",(int)gid); - return(name); + if (grp) { + fstrcpy(name, grp->gr_name); + } + else { + slprintf(name,sizeof(name) - 1, "%d",(int)gid); + } + return talloc_strdup(talloc_tos(), name); } /******************************************************************* @@ -1859,15 +1862,7 @@ const char *readdirname(SMB_STRUCT_DIR *p) dname = dname - 2; #endif - { - static pstring buf; - int len = NAMLEN(ptr); - memcpy(buf, dname, len); - buf[len] = 0; - dname = buf; - } - - return(dname); + return talloc_strdup(talloc_tos(), dname); } /******************************************************************* @@ -2629,7 +2624,7 @@ char *myhostname(void) char *lock_path(const char *name) { - static pstring fname; + pstring fname; pstrcpy(fname,lp_lockdir()); trim_char(fname,'\0','/'); @@ -2640,7 +2635,7 @@ char *lock_path(const char *name) pstrcat(fname,"/"); pstrcat(fname,name); - return fname; + return talloc_strdup(talloc_tos(), fname); } /***************************************************************** @@ -2649,7 +2644,7 @@ char *lock_path(const char *name) char *pid_path(const char *name) { - static pstring fname; + pstring fname; pstrcpy(fname,lp_piddir()); trim_char(fname,'\0','/'); @@ -2660,7 +2655,7 @@ char *pid_path(const char *name) pstrcat(fname,"/"); pstrcat(fname,name); - return fname; + return talloc_strdup(talloc_tos(), fname); } /** @@ -2673,9 +2668,7 @@ char *pid_path(const char *name) char *lib_path(const char *name) { - static pstring fname; - fstr_sprintf(fname, "%s/%s", dyn_LIBDIR, name); - return fname; + return talloc_asprintf(talloc_tos(), "%s/%s", dyn_LIBDIR, name); } /** @@ -2692,29 +2685,18 @@ const char *shlib_ext(void) /******************************************************************* Given a filename - get its directory name NB: Returned in static storage. Caveats: - o Not safe in thread environment. - o Caller must not free. o If caller wishes to preserve, they should copy. ********************************************************************/ char *parent_dirname(const char *path) { - static pstring dirpath; - char *p; - - if (!path) - return(NULL); + char *parent; - pstrcpy(dirpath, path); - p = strrchr_m(dirpath, '/'); /* Find final '/', if any */ - if (!p) { - pstrcpy(dirpath, "."); /* No final "/", so dir is "." */ - } else { - if (p == dirpath) - ++p; /* For root "/", leave "/" in place */ - *p = '\0'; + if (!parent_dirname_talloc(talloc_tos(), path, &parent, NULL)) { + return NULL; } - return dirpath; + + return parent; } BOOL parent_dirname_talloc(TALLOC_CTX *mem_ctx, const char *dir, @@ -3179,9 +3161,9 @@ struct server_id interpret_pid(const char *pid_string) #endif } -char *procid_str_static(const struct server_id *pid) +char *procid_str(TALLOC_CTX *mem_ctx, const struct server_id *pid) { - static fstring str; + fstring str; #ifdef CLUSTER_SUPPORT if (pid->vnn == NONCLUSTER_VNN) { fstr_sprintf(str, "%d", (int)pid->pid); @@ -3192,12 +3174,12 @@ char *procid_str_static(const struct server_id *pid) #else fstr_sprintf(str, "%d", (int)pid->pid); #endif - return str; + return talloc_strdup(mem_ctx, str); } -char *procid_str(TALLOC_CTX *mem_ctx, const struct server_id *pid) +char *procid_str_static(const struct server_id *pid) { - return talloc_strdup(mem_ctx, procid_str_static(pid)); + return procid_str(talloc_tos(), pid); } BOOL procid_valid(const struct server_id *pid) diff --git a/source3/registry/reg_objects.c b/source3/registry/reg_objects.c index aebf0142ee..f759a921d2 100644 --- a/source3/registry/reg_objects.c +++ b/source3/registry/reg_objects.c @@ -439,9 +439,9 @@ uint32 regval_dword( REGISTRY_VALUE *val ) char* regval_sz( REGISTRY_VALUE *val ) { - static pstring data; + pstring data; rpcstr_pull( data, regval_data_p(val), sizeof(data), regval_size(val), 0 ); - return data; + return talloc_strdup(talloc_tos(), data); } diff --git a/source3/registry/reg_perfcount.c b/source3/registry/reg_perfcount.c index dec57a5ec7..ce67b68a83 100644 --- a/source3/registry/reg_perfcount.c +++ b/source3/registry/reg_perfcount.c @@ -37,7 +37,7 @@ PERF_OBJECT_TYPE *_reg_perfcount_find_obj(PERF_DATA_BLOCK *block, int objind); static char* counters_directory( const char *dbname ) { - static pstring fname; + pstring fname; fstring path; if ( !dbname ) @@ -47,7 +47,7 @@ static char* counters_directory( const char *dbname ) pstrcpy( fname, lock_path( path ) ); - return fname; + return talloc_strdup(talloc_tos(), fname); } /********************************************************************* diff --git a/source3/registry/reg_util.c b/source3/registry/reg_util.c index 75050c1850..703ad7cb57 100644 --- a/source3/registry/reg_util.c +++ b/source3/registry/reg_util.c @@ -102,7 +102,7 @@ void normalize_reg_path( pstring keyname ) char* reg_remaining_path( const char *key ) { - static pstring new_path; + pstring new_path; char *p; if ( !key || !*key ) @@ -121,7 +121,7 @@ char* reg_remaining_path( const char *key ) else p++; - return p; + return talloc_strdup(talloc_tos(), p); } /********************************************************************** diff --git a/source3/rpc_client/cli_svcctl.c b/source3/rpc_client/cli_svcctl.c index cb016cbd14..95673c1565 100644 --- a/source3/rpc_client/cli_svcctl.c +++ b/source3/rpc_client/cli_svcctl.c @@ -42,7 +42,7 @@ static struct svc_state_msg state_msg_table[] = { ********************************************************************/ const char* svc_status_string( uint32 state ) { - static fstring msg; + fstring msg; int i; fstr_sprintf( msg, "Unknown State [%d]", state ); @@ -54,7 +54,7 @@ const char* svc_status_string( uint32 state ) } } - return msg; + return talloc_strdup(talloc_tos(), msg); } /******************************************************************** diff --git a/source3/services/services_db.c b/source3/services/services_db.c index 6811db4b14..f3ec62a01b 100644 --- a/source3/services/services_db.c +++ b/source3/services/services_db.c @@ -148,7 +148,7 @@ static char *get_common_service_dispname( const char *servicename ) static char* cleanup_string( const char *string ) { - static pstring clean; + pstring clean; char *begin, *end; pstrcpy( clean, string ); @@ -172,7 +172,7 @@ static char* cleanup_string( const char *string ) end--; } - return begin; + return talloc_strdup(talloc_tos(), begin); } /******************************************************************** diff --git a/source3/smbd/lanman.c b/source3/smbd/lanman.c index 581ac90aeb..9eb2a283cc 100644 --- a/source3/smbd/lanman.c +++ b/source3/smbd/lanman.c @@ -116,18 +116,16 @@ static int StrlenExpanded(connection_struct *conn, int snum, char *s) static char *Expand(connection_struct *conn, int snum, char *s) { - static pstring buf; + pstring buf; if (!s) { return NULL; } StrnCpy(buf,s,sizeof(buf)/2); pstring_sub(buf,"%S",lp_servicename(snum)); - standard_sub_advanced(lp_servicename(SNUM(conn)), conn->user, - conn->connectpath, conn->gid, - get_current_username(), - current_user_info.domain, - buf, sizeof(buf)); - return &buf[0]; + return talloc_sub_advanced(talloc_tos(), lp_servicename(SNUM(conn)), + conn->user, conn->connectpath, conn->gid, + get_current_username(), + current_user_info.domain, buf); } /******************************************************************* |