--- samba-2.2.2.cvs20020120.orig/source/client/smbmount.c +++ samba-2.2.2.cvs20020120/source/client/smbmount.c @@ -719,7 +719,7 @@ *lp = 0; pstrcpy(password,lp+1); got_pass = True; - memset(strchr(opteq+1,'%')+1,'X',strlen(password)); + memset(strchr(opteq+1,'%')+1,'\0',strlen(password)); } if ((lp=strchr(username,'/'))) { *lp = 0; @@ -729,7 +729,7 @@ !strcmp(opts, "password")) { pstrcpy(password,opteq+1); got_pass = True; - memset(opteq+1,'X',strlen(password)); + memset(opteq+1,'\0',strlen(password)); } else if(!strcmp(opts, "credentials")) { pstrcpy(credentials,opteq+1); } else if(!strcmp(opts, "netbiosname")) { @@ -822,7 +822,7 @@ *p = 0; pstrcpy(password,p+1); got_pass = True; - memset(strchr(getenv("USER"),'%')+1,'X',strlen(password)); + memset(strchr(getenv("USER"),'%')+1,'\0',strlen(password)); } strupper(username); } --- samba-2.2.2.cvs20020120.orig/source/script/installbin.sh +++ samba-2.2.2.cvs20020120/source/script/installbin.sh @@ -11,7 +11,7 @@ shift shift -for d in $BASEDIR $BINDIR $LIBDIR $VARDIR $BASEDIR/private; do +for d in $BASEDIR $BINDIR $LIBDIR $VARDIR; do if [ ! -d $d ]; then mkdir $d if [ ! -d $d ]; then @@ -33,9 +33,11 @@ chmod $INSTALLPERMS $BINDIR/$p2 # this is a special case, mount needs this in a specific location - if [ $p2 = smbmount ]; then - ln -sf $BINDIR/$p2 /sbin/mount.smbfs - fi +# Commented out for the Debian Samba package. We take care of this +# important symlink in debian/rules. (peloy@debian.org) +# if [ $p2 = smbmount ]; then +# ln -sf $BINDIR/$p2 /sbin/mount.smbfs +# fi done --- samba-2.2.2.cvs20020120.orig/source/script/installswat.sh +++ samba-2.2.2.cvs20020120/source/script/installswat.sh @@ -48,8 +48,8 @@ for f in $SRCDIR../docs/htmldocs/*.html; do FNAME=$SWATDIR/help/`basename $f` echo $FNAME - cp $f $FNAME || echo Cannot install $FNAME. Does $USER have privileges? - chmod 0644 $FNAME + ln -s ../../../../doc/samba-doc/htmldocs/`basename $f` $FNAME || echo Cannot install $FNAME. Does $USER have privileges? +# chmod 0644 $FNAME done # Install "server-side" includes @@ -63,7 +63,10 @@ # Install Using Samba book -if [ "x$BOOKDIR" != "x" ]; then +# For Debian we do not install anything here, we just create a symlink +# pointing to /usr/share/doc/samba-doc/htmldocs/using_samba/ in +# debian/rules (peloy@debian.org) +if /bin/false; then # Create directories --- samba-2.2.2.cvs20020120.orig/source/web/diagnose.c +++ samba-2.2.2.cvs20020120/source/web/diagnose.c @@ -54,6 +54,7 @@ static struct cli_state cli; extern struct in_addr loopback_ip; + loopback_ip.s_addr = htonl((127 << 24) + 1); if (!cli_initialise(&cli)) return False; --- samba-2.2.2.cvs20020120.orig/source/web/startstop.c +++ samba-2.2.2.cvs20020120/source/web/startstop.c @@ -37,7 +37,7 @@ return; } - slprintf(binfile, sizeof(pstring) - 1, "%s/smbd", SBINDIR); + slprintf(binfile, sizeof(pstring) - 1, "%s/smbd", "/usr/sbin"); become_daemon(); @@ -58,7 +58,7 @@ return; } - slprintf(binfile, sizeof(pstring) - 1, "%s/nmbd", SBINDIR); + slprintf(binfile, sizeof(pstring) - 1, "%s/nmbd", "/usr/sbin"); become_daemon(); --- samba-2.2.2.cvs20020120.orig/source/web/swat.c +++ samba-2.2.2.cvs20020120/source/web/swat.c @@ -49,6 +49,19 @@ #define ENABLE_USER_FLAG "enable_user_flag" #define RHOST "remote_host" +typedef struct html_conversion { + char src; + char *dest; +} html_conversion; + +static const html_conversion entities[] = { + { '"', """ }, + { '&', "&" }, + { '<', "<" }, + { '>', ">" }, + { '\0', NULL }, +}; + /* we need these because we link to locking*.o */ void become_root(void) {} void unbecome_root(void) {} @@ -77,6 +90,51 @@ return newstring; } +static char *htmlentities(char *str) +{ + int i,j, destlen = 0; + int length = strlen(str); + /* Feel free to use a pstring if appropriate -- I haven't + checked if it's guaranteed to be long enough, and suspect it + isn't. -SRL */ + char *dststr = NULL; + char *p; + + for (i = 0; i < length; i++) { + for (j = 0; entities[j].src; j++) { + if (str[i] == entities[j].src) { + destlen += strlen(entities[j].dest); + break; + } + } + if (!entities[j].src) { + destlen++; + } + } + if (length == destlen) { + return(strdup(str)); + } + p = dststr = malloc(destlen + 1); + if (!dststr) { + return(NULL); + } + dststr[destlen] = '\0'; + for (i = 0; i < length; i++) { + for (j = 0; entities[j].src; j++) { + if (str[i] == entities[j].src) { + strncpy(p, entities[j].dest, + strlen(entities[j].dest)); + p += strlen(entities[j].dest); + break; + } + } + if (!entities[j].src) { + *p++ = str[i]; + } + } + return(dststr); +} + static char *stripspace(char *str) { static char newstring[1024]; @@ -182,8 +240,12 @@ case P_STRING: case P_USTRING: - printf("", - make_parm_name(parm->label), *(char **)ptr); + str = htmlentities(*(char **)ptr); + printf("", + make_parm_name(parm->label), str); + if (str != NULL) { + free(str); + } printf("", make_parm_name(parm->label),fix_backslash((char *)(parm->def.svalue))); break;