1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-24 21:34:56 +03:00

Convert to the new pstring interface. This diff is a pretty good

example of the scope of change the new pstrings would entail:
basically inserting PSTR() or FSTR() everywhere you need to coerce one
to a char*.

It's also a good example of the kind of bug we might catch: on about
line 540, we were doing a pstrcpy into an fstring, which might
overflow.  It's not a problem in this particular case, but it is in
general.
(This used to be commit 5a403da4a7)
This commit is contained in:
Martin Pool 2002-01-15 02:15:58 +00:00
parent 0d3e258fd1
commit 1c639ca28e

View File

@ -1,8 +1,8 @@
/*
Unix SMB/Netbios implementation.
Version 1.9.
Main SMB server routines
Copyright (C) Andrew Tridgell 1992-1998
Copyright (C) Andrew Tridgell 1992-1998
Copyright (C) Martin Pool 2002
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -19,6 +19,8 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#define PSTRING_SANCTIFY
#include "includes.h"
extern fstring global_myworkgroup;
@ -117,7 +119,7 @@ static BOOL open_sockets_inetd(void)
close_low_fds();
set_socket_options(smbd_server_fd(),"SO_KEEPALIVE");
set_socket_options(smbd_server_fd(),user_socket_options);
set_socket_options(smbd_server_fd(), PSTR(user_socket_options));
return True;
}
@ -183,7 +185,7 @@ max can be %d\n",
/* ready to listen */
set_socket_options(s,"SO_KEEPALIVE");
set_socket_options(s,user_socket_options);
set_socket_options(s,PSTR(user_socket_options));
if (listen(s, 5) == -1) {
DEBUG(0,("listen: %s\n",strerror(errno)));
@ -205,7 +207,7 @@ max can be %d\n",
/* ready to listen */
set_socket_options(s,"SO_KEEPALIVE");
set_socket_options(s,user_socket_options);
set_socket_options(s,PSTR(user_socket_options));
if (listen(s, 5) == -1) {
DEBUG(0,("open_sockets: listen: %s\n",
@ -299,7 +301,7 @@ max can be %d\n",
am_parent = 0;
set_socket_options(smbd_server_fd(),"SO_KEEPALIVE");
set_socket_options(smbd_server_fd(),user_socket_options);
set_socket_options(smbd_server_fd(),PSTR(user_socket_options));
/* Reset global variables in util.c so
that client substitutions will be
@ -356,8 +358,9 @@ BOOL reload_services(BOOL test)
if (lp_loaded()) {
pstring fname;
pstrcpy(fname,lp_configfile());
if (file_exist(fname,NULL) && !strcsequal(fname,dyn_CONFIGFILE)) {
pstrcpy(dyn_CONFIGFILE,fname);
if (file_exist(PSTR(fname), NULL) &&
!strcsequal(PSTR(fname), PSTR(dyn_CONFIGFILE))) {
pstrcpy(dyn_CONFIGFILE, PSTR(fname));
test = False;
}
}
@ -369,7 +372,7 @@ BOOL reload_services(BOOL test)
lp_killunused(conn_snum_used);
ret = lp_load(dyn_CONFIGFILE,False,False,True);
ret = lp_load(PSTR(dyn_CONFIGFILE), False, False, True);
load_printers();
@ -384,7 +387,7 @@ BOOL reload_services(BOOL test)
{
if (smbd_server_fd() != -1) {
set_socket_options(smbd_server_fd(),"SO_KEEPALIVE");
set_socket_options(smbd_server_fd(),user_socket_options);
set_socket_options(smbd_server_fd(), PSTR(user_socket_options));
}
}
@ -425,13 +428,14 @@ static BOOL dump_core(void)
{
char *p;
pstring dname;
pstrcpy(dname,lp_logfile());
if ((p=strrchr_m(dname,'/'))) *p=0;
if ((p=strrchr_m(PSTR(dname),'/'))) *p=0;
pstrcat(dname,"/corefiles");
mkdir(dname,0700);
sys_chown(dname,getuid(),getgid());
chmod(dname,0700);
if (chdir(dname)) return(False);
mkdir(PSTR(dname),0700);
sys_chown(PSTR(dname),getuid(),getgid());
chmod(PSTR(dname),0700);
if (chdir(PSTR(dname))) return(False);
umask(~(0700));
#ifdef HAVE_GETRLIMIT
@ -449,7 +453,7 @@ static BOOL dump_core(void)
#endif
DEBUG(0,("Dumping core in %s\n",dname));
DEBUG(0,("Dumping core in %s\n", PSTR(dname)));
abort();
return(True);
}
@ -534,15 +538,15 @@ static void init_structs(void )
* set from the config file.
*/
if (!*global_myname) {
if (!*PSTR(global_myname)) {
char *p;
fstrcpy( global_myname, myhostname() );
p = strchr_m( global_myname, '.' );
pstrcpy( global_myname, myhostname() );
p = strchr_m(PSTR(global_myname), '.' );
if (p)
*p = 0;
}
strupper( global_myname );
strupper(PSTR_MUTABLE(global_myname));
conn_init();
@ -617,8 +621,8 @@ static void usage(char *pname)
case 'l':
specified_logfile = True;
slprintf(logfile, sizeof(logfile)-1, "%s/log.smbd", optarg);
lp_set_logfile(logfile);
pstr_sprintf(logfile, "%s/log.smbd", optarg);
lp_set_logfile(PSTR(logfile));
break;
case 'a':
@ -680,12 +684,11 @@ static void usage(char *pname)
append_log = True;
if(!specified_logfile) {
slprintf(logfile, sizeof(logfile)-1, "%s/log.smbd",
dyn_LOGFILEBASE);
lp_set_logfile(logfile);
pstr_sprintf(logfile, "%s/log.smbd", PSTR(dyn_LOGFILEBASE));
lp_set_logfile(PSTR(logfile));
}
pstrcpy(remote_machine, "smbd");
fstrcpy(remote_machine, "smbd");
setup_logging(argv[0],interactive);