diff -c gopher+/Makefile:3.7 gopher+/Makefile:3.8 *** gopher+/Makefile:3.7 Thu Aug 12 02:26:39 1993 --- gopher+/Makefile Thu Aug 12 02:26:39 1993 *************** *** 1,7 **** #******************************************************************** # $Author: lindner $ ! # $Revision: 3.7 $ ! # $Date: 1993/07/27 05:32:28 $ # $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/Makefile,v $ # $State: Exp $ # --- 1,7 ---- #******************************************************************** # $Author: lindner $ ! # $Revision: 3.8 $ ! # $Date: 1993/08/05 22:22:40 $ # $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/Makefile,v $ # $State: Exp $ # *************** *** 15,20 **** --- 15,23 ---- #********************************************************************* # Revision History: # $Log: Makefile,v $ + # Revision 3.8 1993/08/05 22:22:40 lindner + # warning message for archive + # # Revision 3.7 1993/07/27 05:32:28 lindner # added gophfilt and zip stuff # *************** *** 111,116 **** --- 114,121 ---- find $$HERE -type f -print |grep -v '.o$$' |grep -v '~$$' |grep -v 'CVS' >$$HERE/MANIFEST ; \ /usr/gnu/bin/tar -T $$HERE/MANIFEST -czvf $$HERE.tar.Z ;\ zip -@ $$HERE.zip <$$HERE/MANIFEST + @echo "Did you remember to update the patchlevel.h Paul?..." + @echo "Hmmm... Hmmmm...." tags: etags `find . -print | egrep '\.[ch]$$'` diff -c gopher+/make.com:3.1 gopher+/make.com:3.2 *** gopher+/make.com:3.1 Thu Aug 12 02:26:40 1993 --- gopher+/make.com Thu Aug 12 02:26:40 1993 *************** *** 5,10 **** --- 5,12 ---- @make UCX @make WOLLONGONG @make MULTINET + @make CMUIP + @make NETLIB $ exit $ ENDIF $! diff -c gopher+/patchlevel.h:3.3 gopher+/patchlevel.h:3.4 *** gopher+/patchlevel.h:3.3 Thu Aug 12 02:26:42 1993 --- gopher+/patchlevel.h Thu Aug 12 02:26:42 1993 *************** *** 5,8 **** #define GOPHER_MAJOR_VERSION "2" #define GOPHER_MINOR_VERSION "0" ! #define PATCHLEVEL 1 --- 5,8 ---- #define GOPHER_MAJOR_VERSION "2" #define GOPHER_MINOR_VERSION "0" ! #define PATCHLEVEL 3 diff -c gopher+/doc/Makefile:3.3 gopher+/doc/Makefile:3.4 *** gopher+/doc/Makefile:3.3 Thu Aug 12 02:26:45 1993 --- gopher+/doc/Makefile Thu Aug 12 02:26:45 1993 *************** *** 2,12 **** install: ! $(INSTALL) -c gopherd.conf.5 $(MAN5DIR) ! $(INSTALL) -c gopherd.8 $(MAN8DIR) ! $(INSTALL) -c gopherindex.8 $(MAN8DIR) ! $(INSTALL) -c gopher.1 $(MAN1DIR) ! $(INSTALL) -c gophfilt.1 $(MAN1DIR) clean: -rm -f *~ --- 2,12 ---- install: ! $(INSTALL) gopherd.conf.5 $(MAN5DIR) ! $(INSTALL) gopherd.8 $(MAN8DIR) ! $(INSTALL) gopherindex.8 $(MAN8DIR) ! $(INSTALL) gopher.1 $(MAN1DIR) ! $(INSTALL) gophfilt.1 $(MAN1DIR) clean: -rm -f *~ diff -c gopher+/doc/client.changes:3.7 gopher+/doc/client.changes:3.8 *** gopher+/doc/client.changes:3.7 Thu Aug 12 02:26:46 1993 --- gopher+/doc/client.changes Thu Aug 12 02:26:46 1993 *************** *** 1,4 **** ! $Id: client.changes,v 3.7 1993/08/04 22:23:41 lindner Exp $ Gopher+2.0 patchlevel 2 ----------------------- --- 1,14 ---- ! $Id: client.changes,v 3.8 1993/08/05 22:41:05 lindner Exp $ ! ! Gopher+2.0 patchlevel 3 ! ----------------------- ! ! * Should compile for CMUIP and NETLIB on VMS (not tested) ! ! * Fix for control-c on startup ! ! * Added warning comments in mail_file() ! Gopher+2.0 patchlevel 2 ----------------------- diff -c gopher+/doc/server.changes:3.7 gopher+/doc/server.changes:3.8 *** gopher+/doc/server.changes:3.7 Thu Aug 12 02:26:48 1993 --- gopher+/doc/server.changes Thu Aug 12 02:26:49 1993 *************** *** 1,4 **** ! $Id: server.changes,v 3.7 1993/08/04 22:23:45 lindner Exp $ Gopher 2.0 patchlevel 2 ----------------------- --- 1,16 ---- ! $Id: server.changes,v 3.8 1993/08/05 22:41:06 lindner Exp $ ! ! Gopher 2.0 patchlevel 3 ! ----------------------- ! ! * Only install gopherindex if built ! ! * Added fix for dedot to remove quotes for when using system or popen ! ! * Log execution of programs ! ! * Add one more call to Gpopen for shellindexquery ! Gopher 2.0 patchlevel 2 ----------------------- diff -c /dev/null gopher+/gopher/cmuip.opt:3.1 *** /dev/null Thu Aug 12 02:26:53 1993 --- gopher+/gopher/cmuip.opt Thu Aug 12 02:26:54 1993 *************** *** 0 **** --- 1,3 ---- + identification="CMUIP-1.12" + sys$library:neterror + sys$share:vaxcrtl.exe/share diff -c gopher+/gopher/compile.com:3.3 gopher+/gopher/compile.com:3.4 *** gopher+/gopher/compile.com:3.3 Thu Aug 12 02:26:55 1993 --- gopher+/gopher/compile.com Thu Aug 12 02:26:55 1993 *************** *** 1,7 **** $!******************************************************************** $! $Author: lindner $ ! $! $Revision: 3.3 $ ! $! $Date: 1993/06/22 06:12:53 $ $! $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/gopher/compile.com,v $ $! $State: Exp $ $! --- 1,7 ---- $!******************************************************************** $! $Author: lindner $ ! $! $Revision: 3.4 $ ! $! $Date: 1993/08/05 03:24:37 $ $! $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/gopher/compile.com,v $ $! $State: Exp $ $! *************** *** 15,20 **** --- 15,23 ---- $!********************************************************************* $! Revision History: $! $Log: compile.com,v $ + $! Revision 3.4 1993/08/05 03:24:37 lindner + $! Changes for CMUIP and NETLIB + $! $! Revision 3.3 1993/06/22 06:12:53 lindner $! mods for DEC C $! *************** *** 40,45 **** --- 43,50 ---- @compile UCX @compile WOLLONGONG @compile MULTINET + @compile CMUIP + @compile NETLIB $ exit $ ENDIF $! diff -c gopher+/gopher/gopher.c:3.26 gopher+/gopher/gopher.c:3.27 *** gopher+/gopher/gopher.c:3.26 Thu Aug 12 02:26:57 1993 --- gopher+/gopher/gopher.c Thu Aug 12 02:26:58 1993 *************** *** 1,7 **** /******************************************************************** * $Author: lindner $ ! * $Revision: 3.26 $ ! * $Date: 1993/08/04 22:08:47 $ * $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/gopher/gopher.c,v $ * $State: Exp $ * --- 1,7 ---- /******************************************************************** * $Author: lindner $ ! * $Revision: 3.27 $ ! * $Date: 1993/08/05 03:24:21 $ * $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/gopher/gopher.c,v $ * $State: Exp $ * *************** *** 15,20 **** --- 15,23 ---- ********************************************************************* * Revision History: * $Log: gopher.c,v $ + * Revision 3.27 1993/08/05 03:24:21 lindner + * Fix for control-c on startup + * * Revision 3.26 1993/08/04 22:08:47 lindner * Fix for problems with '=' and '?' and /bin/mail Gripe mods * *************** *** 750,756 **** /* RCdestroy(GlobalRC);*/ do { ! GDdestroy(CurrentDir); } while (popgopher(&CurrentDir) != -1); --- 753,760 ---- /* RCdestroy(GlobalRC);*/ do { ! if (CurrentDir != NULL) ! GDdestroy(CurrentDir); } while (popgopher(&CurrentDir) != -1); diff -c gopher+/gopher/link.com:3.1.1.1 gopher+/gopher/link.com:3.2 *** gopher+/gopher/link.com:3.1.1.1 Thu Aug 12 02:27:00 1993 --- gopher+/gopher/link.com Thu Aug 12 02:27:00 1993 *************** *** 1,7 **** $!******************************************************************** $! $Author: lindner $ ! $! $Revision: 3.1.1.1 $ ! $! $Date: 1993/02/11 18:02:59 $ $! $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/gopher/link.com,v $ $! $State: Exp $ $! --- 1,7 ---- $!******************************************************************** $! $Author: lindner $ ! $! $Revision: 3.2 $ ! $! $Date: 1993/08/05 03:24:39 $ $! $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/gopher/link.com,v $ $! $State: Exp $ $! *************** *** 15,20 **** --- 15,23 ---- $!********************************************************************* $! Revision History: $! $Log: link.com,v $ + $! Revision 3.2 1993/08/05 03:24:39 lindner + $! Changes for CMUIP and NETLIB + $! $! Revision 3.1.1.1 1993/02/11 18:02:59 lindner $! Gopher+1.2beta release $! *************** *** 34,39 **** --- 37,44 ---- @link UCX @link WOLLONGONG @link MULTINET + @link CMUIP + @link NETLIB $ exit $ ENDIF $! diff -c /dev/null gopher+/gopher/netlib.opt:3.1 *** /dev/null Thu Aug 12 02:27:01 1993 --- gopher+/gopher/netlib.opt Thu Aug 12 02:27:01 1993 *************** *** 0 **** --- 1,3 ---- + identification = "NETLIB-1.12" + sys$share:netlib_shrxfr/shareable + sys$share:vaxcrtl/shareable diff -c gopher+/gopher/ourutils.c:3.19 gopher+/gopher/ourutils.c:3.20 *** gopher+/gopher/ourutils.c:3.19 Thu Aug 12 02:27:02 1993 --- gopher+/gopher/ourutils.c Thu Aug 12 02:27:03 1993 *************** *** 1,7 **** /******************************************************************** * $Author: lindner $ ! * $Revision: 3.19 $ ! * $Date: 1993/08/04 22:07:23 $ * $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/gopher/ourutils.c,v $ * $State: Exp $ * --- 1,7 ---- /******************************************************************** * $Author: lindner $ ! * $Revision: 3.20 $ ! * $Date: 1993/08/05 20:40:43 $ * $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/gopher/ourutils.c,v $ * $State: Exp $ * *************** *** 15,20 **** --- 15,23 ---- ********************************************************************* * Revision History: * $Log: ourutils.c,v $ + * Revision 3.20 1993/08/05 20:40:43 lindner + * Added warning message.. + * * Revision 3.19 1993/08/04 22:07:23 lindner * Use /bin/mail instead of ucbmail * *************** *** 184,189 **** --- 187,198 ---- if (*SaveName == '\0') return; + + /* + * You should be very careful when you add characters to this list.. + * + * It could create a nasty security hole! + */ #define ACHARS "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789%.@!-_" diff -c gopher+/gopherd/Makefile:3.6 gopher+/gopherd/Makefile:3.7 *** gopher+/gopherd/Makefile:3.6 Thu Aug 12 02:27:08 1993 --- gopher+/gopherd/Makefile Thu Aug 12 02:27:09 1993 *************** *** 1,7 **** #******************************************************************** # $Author: lindner $ ! # $Revision: 3.6 $ ! # $Date: 1993/08/04 22:12:01 $ # $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/gopherd/Makefile,v $ # $State: Exp $ # --- 1,7 ---- #******************************************************************** # $Author: lindner $ ! # $Revision: 3.7 $ ! # $Date: 1993/08/05 22:20:19 $ # $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/gopherd/Makefile,v $ # $State: Exp $ # *************** *** 15,20 **** --- 15,23 ---- #********************************************************************* # Revision History: # $Log: Makefile,v $ + # Revision 3.7 1993/08/05 22:20:19 lindner + # Only install gopherindex if built + # # Revision 3.6 1993/08/04 22:12:01 lindner # Rebuild server if patchlevel.h changes # *************** *** 138,144 **** -mv $(SERVERDIR)/gopherd.conf $(SERVERDIR)/gopherd.conf.old $(INSTALL) $(TARGET) $(SERVERDIR) $(INSTALL) gopherd.conf $(SERVERDIR) ! $(INSTALL) gopherindex $(SERVERDIR) -rm $(SERVERDIR)/gopherls $(SERVERDIR)/gindexd -ln -s $(SERVERDIR)/$(TARGET) $(SERVERDIR)/gopherls -ln -s $(SERVERDIR)/$(TARGET) $(SERVERDIR)/gindexd --- 141,148 ---- -mv $(SERVERDIR)/gopherd.conf $(SERVERDIR)/gopherd.conf.old $(INSTALL) $(TARGET) $(SERVERDIR) $(INSTALL) gopherd.conf $(SERVERDIR) ! if [ -f gopherindex ]; then \ ! $(INSTALL) gopherindex $(SERVERDIR) -rm $(SERVERDIR)/gopherls $(SERVERDIR)/gindexd -ln -s $(SERVERDIR)/$(TARGET) $(SERVERDIR)/gopherls -ln -s $(SERVERDIR)/$(TARGET) $(SERVERDIR)/gindexd diff -c gopher+/gopherd/dedot.c:3.1.1.1 gopher+/gopherd/dedot.c:3.3 *** gopher+/gopherd/dedot.c:3.1.1.1 Thu Aug 12 02:27:09 1993 --- gopher+/gopherd/dedot.c Thu Aug 12 02:27:10 1993 *************** *** 1,9 **** /******************************************************************** * $Author: lindner $ ! * $Revision: 3.1.1.1 $ ! * $Date: 1993/02/11 18:02:50 $ * $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/gopherd/dedot.c,v $ ! * $Status: $ * * Paul Lindner, University of Minnesota CIS. * --- 1,9 ---- /******************************************************************** * $Author: lindner $ ! * $Revision: 3.3 $ ! * $Date: 1993/08/05 22:19:43 $ * $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/gopherd/dedot.c,v $ ! * $State: Exp $ * * Paul Lindner, University of Minnesota CIS. * *************** *** 15,20 **** --- 15,26 ---- ********************************************************************* * Revision History: * $Log: dedot.c,v $ + * Revision 3.3 1993/08/05 22:19:43 lindner + * Fix for single quotes + * + * Revision 3.2 1993/08/05 20:43:07 lindner + * Added fix for dedot to remove quotes for when using system or popen + * * Revision 3.1.1.1 1993/02/11 18:02:50 lindner * Gopher+1.2beta release * *************** *** 49,89 **** ** John Sellens jmsellens@watdragon.waterloo.edu */ ! /* If DOSINGLE is defined, references to '.' are also removed */ ! #define DOSINGLE ! void dedot1(); void dedot2(); void dedot1( src ) char *src; { ! if ( *src == '.' ) { ! if ( ! #ifdef DOSINGLE ! src[1] == '\0' || src[1] == '/' || ! #endif ! ( src[1] == '.' && ( src[2] == '\0' || src[2] == '/' ) ) ) { ! dedot2( src, src ); ! return; ! } ! } ! while ( *src ) { ! if ( *src++ == '/' ) { ! if ( *src == '.' ) { ! if ( ! #ifdef DOSINGLE ! src[1] == '\0' || src[1] == '/' || ! #endif ! ( src[1] == '.' && ( src[2] == '\0' || src[2] == '/' ) ) ) { ! dedot2( src, src ); ! return; ! } ! } ! } ! } ! return; } /* copy src to dst, blindly removing (not interpreting) ./ and ../ */ --- 55,106 ---- ** John Sellens jmsellens@watdragon.waterloo.edu */ ! void dequote(); void dedot1(); void dedot2(); + void + dequote1(src) + char *src; + { + char *cp2; + + /** Strip out the quotes.. **/ + while (*src != '\0') { + if (*src == '"' || *src == '\'') { + for (cp2=src; *cp2 != '\0'; cp2++) { + *cp2 = *(cp2+1); + } + } + src++; + } + } + + void dedot1( src ) char *src; { ! dequote1(src); ! if ( *src == '.' ) { ! if (src[1] == '\0' || src[1] == '/' || ! ( src[1] == '.' && ( src[2] == '\0' || src[2] == '/' ) ) ) { ! dedot2( src, src ); ! return; ! } ! } ! while ( *src ) { ! if ( *src++ == '/' ) { ! if ( *src == '.' ) { ! if (src[1] == '\0' || src[1] == '/' || ! ( src[1] == '.' && ( src[2] == '\0' || src[2] == '/' ) ) ) { ! dedot2( src, src ); ! return; ! } ! } ! } ! } ! return; } /* copy src to dst, blindly removing (not interpreting) ./ and ../ */ *************** *** 92,137 **** char *src; char *dst; { ! /* ! ** We either have /, a filename, ./ or ../ ! */ ! while ( *src ) { ! switch ( *src ) { ! case '/': ! /* copy it, and skip any extras e.g. /a///b */ ! *dst++ = *src++; ! while ( *src == '/' ) src++; ! break; ! case '.': ! #ifdef DOSINGLE ! /* don't forget about trailing . and .. */ ! if ( src[1] == '/' ) { /* ./ */ ! src += 2; break; ! } ! if ( src[1] == '\0' ) { /* .\0 */ ! src += 1; /* only 1 so we don't fall off the end */ break; ! } ! #endif ! if ( src[1] == '.' && src[2] == '/' ) { /* ../ */ ! src += 3; break; ! } ! if ( src[1] == '.' && src[2] == '\0' ) { /* .. */ ! src += 2; /* don't fall off the end */ break; ! } ! /* must be a filename - fall through */ ! default: ! /* must be filename - copy it over */ ! while ( *src != '\0' && *src != '/' ) *dst++ = *src++; ! break; ! } ! } ! /* and terminate it */ ! *dst = '\0'; } --- 109,164 ---- char *src; char *dst; { ! /* ! ** We either have /, a filename, ./ or ../ ! */ ! int i; ! while ( *src ) { ! switch ( *src ) { ! case '"': ! /* Ignore it.. */ ! src++; ! break; ! case '/': ! /* copy it, and skip any extras e.g. /a///b */ ! *dst++ = *src++; ! while ( *src == '/' ) src++; ! break; ! case '.': ! /* don't forget about trailing . and .. */ ! ! /* Nuke any quotes */ ! for (i=1; src[i] == '"' || *src == '\''; i++) ! ; ! ! if ( src[i] == '/' ) { /* ./ */ ! src += i+1; break; ! } ! if ( src[i] == '\0' ) { /* .\0 */ ! src += i; /* only 1 so we don't fall off the end */ break; ! } ! if ( src[i] == '.' && src[i+2] == '/' ) { /* ../ */ ! src += i+2; break; ! } ! if ( src[i] == '.' && src[i+2] == '\0' ) { /* .. */ ! src += i+1; /* don't fall off the end */ break; ! } ! /* must be a filename - fall through */ ! default: ! /* must be filename - copy it over */ ! while ( *src != '\0' && *src != '/' && *src != '"') *dst++ = *src++; ! break; ! } ! } ! /* and terminate it */ ! *dst = '\0'; } + + diff -c gopher+/gopherd/gopherd.c:3.27 gopher+/gopherd/gopherd.c:3.28 *** gopher+/gopherd/gopherd.c:3.27 Thu Aug 12 02:27:11 1993 --- gopher+/gopherd/gopherd.c Thu Aug 12 02:27:11 1993 *************** *** 1,7 **** /******************************************************************** * $Author: lindner $ ! * $Revision: 3.27 $ ! * $Date: 1993/08/02 17:59:26 $ * $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/gopherd/gopherd.c,v $ * $State: Exp $ * --- 1,7 ---- /******************************************************************** * $Author: lindner $ ! * $Revision: 3.28 $ ! * $Date: 1993/08/05 20:47:16 $ * $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/gopherd/gopherd.c,v $ * $State: Exp $ * *************** *** 15,20 **** --- 15,23 ---- ********************************************************************* * Revision History: * $Log: gopherd.c,v $ + * Revision 3.28 1993/08/05 20:47:16 lindner + * Log execution of programs + * * Revision 3.27 1993/08/02 17:59:26 lindner * Fix for Debug syntax error when using DL * *************** *** 1098,1103 **** --- 1101,1107 ---- EXECargs = args; printfile(sockfd, command, 0, -1, CMDisGplus(cmd)); + LOGGopher(sockfd, "Executed %s %s", command, args); } break; diff -c gopher+/gopherd/index.c:3.8 gopher+/gopherd/index.c:3.9 *** gopher+/gopherd/index.c:3.8 Thu Aug 12 02:27:12 1993 --- gopher+/gopherd/index.c Thu Aug 12 02:27:13 1993 *************** *** 1,7 **** /******************************************************************** * $Author: lindner $ ! * $Revision: 3.8 $ ! * $Date: 1993/08/04 22:12:43 $ * $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/gopherd/index.c,v $ * $State: Exp $ * --- 1,7 ---- /******************************************************************** * $Author: lindner $ ! * $Revision: 3.9 $ ! * $Date: 1993/08/05 20:44:02 $ * $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/gopherd/index.c,v $ * $State: Exp $ * *************** *** 15,20 **** --- 15,23 ---- ********************************************************************* * Revision History: * $Log: index.c,v $ + * Revision 3.9 1993/08/05 20:44:02 lindner + * Use Gpopen instead of popen, remove extra filtering code + * * Revision 3.8 1993/08/04 22:12:43 lindner * Mods to use Gpopen * *************** *** 367,384 **** gd = GDnew(32); - /*** Clean up the arguments, remove ; and " and `**/ - cp = Searchstring; - while (*cp != '\0') { - if (*cp == ';' ||*cp == '"' || *cp == '`' || *cp == '$') - *cp = '.'; - cp++; - } - - sprintf(Command, "\"%s\" \"%s\"", Script, Searchstring); ! Searchprocess = popen(Command, "r"); if (Searchprocess == NULL) { writestring(sockfd, ".\r\n"); --- 370,378 ---- gd = GDnew(32); sprintf(Command, "\"%s\" \"%s\"", Script, Searchstring); ! Searchprocess = Gpopen(Command, "r"); if (Searchprocess == NULL) { writestring(sockfd, ".\r\n"); diff -c gopher+/gopherd/serverutil.c:3.10 gopher+/gopherd/serverutil.c:3.11 *** gopher+/gopherd/serverutil.c:3.10 Thu Aug 12 02:27:14 1993 --- gopher+/gopherd/serverutil.c Thu Aug 12 02:27:14 1993 *************** *** 1,7 **** /******************************************************************** * $Author: lindner $ ! * $Revision: 3.10 $ ! * $Date: 1993/08/04 22:14:51 $ * $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/gopherd/serverutil.c,v $ * $State: Exp $ * --- 1,7 ---- /******************************************************************** * $Author: lindner $ ! * $Revision: 3.11 $ ! * $Date: 1993/08/05 20:46:36 $ * $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/gopherd/serverutil.c,v $ * $State: Exp $ * *************** *** 15,20 **** --- 15,23 ---- ********************************************************************* * Revision History: * $Log: serverutil.c,v $ + * Revision 3.11 1993/08/05 20:46:36 lindner + * Fix for Gpopen for single quotes and ! + * * Revision 3.10 1993/08/04 22:14:51 lindner * Mods to use Gpopen * *************** *** 483,488 **** --- 486,492 ---- char *rw; { int inquote = 0; + int insquote = 0; int i; /** Strip out the naughty bits.. **/ *************** *** 489,497 **** for (i=0; cmd[i] != '\0'; i++) { switch (cmd[i]) { case '"': ! inquote = 1-inquote; break; case '*': case '&': case '|': --- 493,507 ---- for (i=0; cmd[i] != '\0'; i++) { switch (cmd[i]) { case '"': ! if (!insquote) ! inquote = 1-inquote; break; + case '\'': + if (!inquote) + insquote = 1-insquote; + break; + case '*': case '&': case '|': *************** *** 500,506 **** case '?': case '<': case '>': - case '!': case '(': case ')': case '{': --- 510,515 ---- *************** *** 510,522 **** case '^': /*** Stuff that's okay if quoted.. ***/ ! if (!inquote) { ! LOGGopher("Possible Security Violation '%s'", cmd); return(NULL); } break; case '\\': case '`': case '\n': --- 519,532 ---- case '^': /*** Stuff that's okay if quoted.. ***/ ! if (!inquote && !insquote) { ! LOGGopher(0, "Possible Security Violation '%s'", cmd); return(NULL); } break; + case '!': case '\\': case '`': case '\n': *************** *** 523,529 **** case '$': /*** Stuff that shouldn't be in there at all! **/ ! LOGGopher("Possible Security Violation '%s'", cmd); return(NULL); break; --- 533,539 ---- case '$': /*** Stuff that shouldn't be in there at all! **/ ! LOGGopher(0, "Possible Security Violation '%s'", cmd); return(NULL); break; diff -c gopher+/object/Sockets.c:3.3 gopher+/object/Sockets.c:3.4 *** gopher+/object/Sockets.c:3.3 Thu Aug 12 02:27:17 1993 --- gopher+/object/Sockets.c Thu Aug 12 02:27:18 1993 *************** *** 1,7 **** /******************************************************************** * $Author: lindner $ ! * $Revision: 3.3 $ ! * $Date: 1993/07/29 20:01:02 $ * $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/object/Sockets.c,v $ * $State: Exp $ * --- 1,7 ---- /******************************************************************** * $Author: lindner $ ! * $Revision: 3.4 $ ! * $Date: 1993/08/05 03:23:37 $ * $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/object/Sockets.c,v $ * $State: Exp $ * *************** *** 15,20 **** --- 15,23 ---- ********************************************************************* * Revision History: * $Log: Sockets.c,v $ + * Revision 3.4 1993/08/05 03:23:37 lindner + * Changes for CMUIP and NETLIB + * * Revision 3.3 1993/07/29 20:01:02 lindner * Removed dead variables * *************** *** 37,57 **** /* Socket specific stuff, ugh! */ #ifdef VMS ! #include ! #include ! #include ! #include ! #include ! #else ! #include ! #include ! #include ! #include ! #ifndef hpux ! #include ! #endif ! #include #endif /* not VMS */ #include "Malloc.h" --- 40,67 ---- /* Socket specific stuff, ugh! */ #ifdef VMS ! # if !defined(CMUIP) && !defined(NETLIB) ! # include ! # include ! # include ! # include ! # include ! # include iodef ! # include ssdef ! # else ! # include iodef ! # include ssdef ! # endif /* if !CMUIP && !NETLIB */ ! #else /* VMS */ ! # include ! # include ! # include ! # include ! # ifndef hpux ! # include ! # endif ! # include #endif /* not VMS */ #include "Malloc.h" *************** *** 134,139 **** --- 144,150 ---- char *hostname; int port; { + #if !defined(CMUIP) && !defined(NETLIB) struct sockaddr_in Server; struct hostent *HostPtr; int sockfd = 0; *************** *** 177,182 **** --- 188,252 ---- } return(sockfd); + + #else /* !NETLIB && !CMUIP */ + #ifdef NETLIB + int status; + static int iSock = 0; + struct { + long len; + char *adr; + } host_desc; + + #define NET_K_TCP 1 + status = NET_ASSIGN (&iSock); + if ((status & 1) == 0) + return (-3); + status = NET_BIND (&iSock, NET_K_TCP, 0, 0, 0); + if ((status & 1) == 0) + return (-3); + host_desc.adr = hostname; + host_desc.len = strlen (host_desc.adr); + status = TCP_CONNECT (&iSock, &host_desc, port); + if ((status & 1) == 0) { + NET_DEASSIGN (&iSock); + if (status == SS$_REJECT) + return (-4); + if (status == SS$_ENDOFFILE) + return (-2); + return (-1); + } + return (iSock); + #else /* ifdef NETLIB: assume CMUIP */ + short channel; + int status; + struct { + short status; + short size; + long xxx; + } cmu_iosb; + static struct {long l; char *a;} ip_dev = {12, "INET$DEVICE:"}; + globalvalue NET$_CREF; /* Connection refused */ + globalvalue NET$_DSNAMERR; /* Domain server name error */ + status = SYS$ASSIGN (&ip_dev, &channel, 0, 0); + if ((status & 1) == 0) + return (-3); + status = SYS$QIOW (0, channel, IO$_CREATE, &cmu_iosb, 0, 0, + hostname, port, 0, 1, 0, 0); + if ((status & 1) == 0 || (cmu_iosb.status & 1) == 0) { + SYS$DASSGN (channel); + if (cmu_iosb.status == SS$_ABORT) { + if (cmu_iosb.xxx == NET$_CREF) + return (-4); + if (cmu_iosb.xxx == NET$_DSNAMERR) + return (-2); + } + return (-1); + } + return (channel); + #endif + #endif + } diff -c gopher+/object/compile.com:3.5 gopher+/object/compile.com:3.6 *** gopher+/object/compile.com:3.5 Thu Aug 12 02:27:18 1993 --- gopher+/object/compile.com Thu Aug 12 02:27:19 1993 *************** *** 35,40 **** --- 35,42 ---- @compile UCX @compile WOLLONGONG @compile MULTINET + @compile CMUIP + @compile NETLIB $ exit $ ENDIF $ ON CONTROL_Y THEN GOTO CLEANUP diff -c gopher+/object/util.c:3.7 gopher+/object/util.c:3.8 *** gopher+/object/util.c:3.7 Thu Aug 12 02:27:19 1993 --- gopher+/object/util.c Thu Aug 12 02:27:20 1993 *************** *** 1,7 **** /******************************************************************** * $Author: lindner $ ! * $Revision: 3.7 $ ! * $Date: 1993/07/27 05:30:30 $ * $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/object/util.c,v $ * $State: Exp $ * --- 1,7 ---- /******************************************************************** * $Author: lindner $ ! * $Revision: 3.8 $ ! * $Date: 1993/08/05 03:23:40 $ * $Source: /tmp_mnt/home/mudhoney/GopherSrc/CVS/gopher+/object/util.c,v $ * $State: Exp $ * *************** *** 15,20 **** --- 15,23 ---- ********************************************************************* * Revision History: * $Log: util.c,v $ + * Revision 3.8 1993/08/05 03:23:40 lindner + * Changes for CMUIP and NETLIB + * * Revision 3.7 1993/07/27 05:30:30 lindner * Mondo Debug overhaul from Mitra * *************** *** 75,82 **** #endif ! #if defined(VMS) && (defined(WOLLONGONG) || defined(MULTINET)) ! /* Multinet and Wollongong (non UCX-emulation) use channel numbers */ /* for sockets, which are small multiples of 16. The first 5 */ /* channels can be assumed to be already used, so we assume that */ /* sockets start at 64, and that only 64 VAXC fds are simultaneously */ --- 78,85 ---- #endif ! #if defined(VMS) && (defined(WOLLONGONG) || defined(MULTINET) ||defined(CMUIP)||defined(NETLIB)) ! /* Multinet and Wollongong,etc. (non UCX-emulation) use channel numbers */ /* for sockets, which are small multiples of 16. The first 5 */ /* channels can be assumed to be already used, so we assume that */ /* sockets start at 64, and that only 64 VAXC fds are simultaneously */ *************** *** 95,101 **** if (IS_SOCKET(s)) { #ifdef MULTINET return (socket_close(s)); ! #else /* WOLLONGONG */ return (netclose(s)); #endif } --- 98,104 ---- if (IS_SOCKET(s)) { #ifdef MULTINET return (socket_close(s)); ! #else /* WOLLONGONG, CMUIP, NETLIB */ return (netclose(s)); #endif } *************** *** 120,126 **** nleft = nbytes; while (nleft > 0) { ! #if defined(VMS) && defined(WOLLONGONG) nread = IS_SOCKET(fd) ? netread(fd, ptr, nleft) : read(fd, ptr, nleft); #else #if defined(VMS) && defined(MULTINET) --- 123,129 ---- nleft = nbytes; while (nleft > 0) { ! #if defined(VMS) && (defined(WOLLONGONG) || defined(CMUIP) || defined(NETLIB)) nread = IS_SOCKET(fd) ? netread(fd, ptr, nleft) : read(fd, ptr, nleft); #else #if defined(VMS) && defined(MULTINET) *************** *** 163,169 **** nleft = nbytes; while(nleft > 0) { ! #if defined(VMS) && defined(WOLLONGONG) nwritten = IS_SOCKET(fd) ? netwrite(fd, ptr, nleft) : write(fd, ptr, nleft); #else #if defined(VMS) && defined(MULTINET) --- 166,172 ---- nleft = nbytes; while(nleft > 0) { ! #if defined(VMS) && (defined(WOLLONGONG) || defined(CMUIP) || defined(NETLIB)) nwritten = IS_SOCKET(fd) ? netwrite(fd, ptr, nleft) : write(fd, ptr, nleft); #else #if defined(VMS) && defined(MULTINET) *************** *** 229,235 **** int bytesread = 0; if (recvbufptr == 0 || Oldsockfd != sockfd) { ! #if defined(VMS) && defined(WOLLONGONG) recvbufsize = IS_SOCKET(sockfd) ? netread(sockfd, recvbuf, RECVSIZE) : read(sockfd, recvbuf, RECVSIZE); #else --- 232,238 ---- int bytesread = 0; if (recvbufptr == 0 || Oldsockfd != sockfd) { ! #if defined(VMS) && (defined(WOLLONGONG)||defined(CMUIP)||defined(NETLIB)) recvbufsize = IS_SOCKET(sockfd) ? netread(sockfd, recvbuf, RECVSIZE) : read(sockfd, recvbuf, RECVSIZE); #else *************** *** 624,630 **** --- 627,782 ---- } + + #if defined(VMS) && defined(NETLIB) + /* + * netclose, netread, and netwrite for NETLIB + */ + + #include iodef + + static struct { + short status; + short size; + long xxx; + } netlib_iosb; + + void netlib_ast (param) + int param; + { + SYS$SETEF (0); + } + + int netclose (channel) + int channel; + { + NET_DEASSIGN (&channel); + + return (0); + } + + int netread (channel, buffer, length) + int channel; + char *buffer; + int length; + { + struct { + long len; + char *adr; + } buffer_desc; + int status; + + if (length > 1500) length = 1500; + buffer_desc.len = length; + buffer_desc.adr = buffer; + SYS$CLREF (0); + status = TCP_RECEIVE (&channel, &buffer_desc, &netlib_iosb, netlib_ast, 0); + if ((status & 1) == 0) + return (-1); + SYS$WAITFR (0); + if ((netlib_iosb.status & 1) == 0) { + return (-1); + } + return (netlib_iosb.size); + } + + int netwrite (channel, buffer, length) + int channel; + char *buffer; + int length; + { + struct { + long len; + char *adr; + } buffer_desc; + int status; + + buffer_desc.len = length; + buffer_desc.adr = buffer; + SYS$CLREF (0); + status = TCP_SEND (&channel, &buffer_desc, 6, &netlib_iosb, netlib_ast, 0); + if ((status & 1) == 0) + return (-1); + SYS$WAITFR (0); + if ((netlib_iosb.status & 1) == 0) { + return (-1); + } + return (netlib_iosb.size); + } + + #endif /* NETLIB */ + + #if defined(VMS) && defined(CMUIP) + + /* + * netclose, netread, and netwrite for CMUIP + */ + + #include iodef + + static struct { + short status; + short size; + long xxx; + } cmu_iosb; + + int netclose (channel) + int channel; + { + int status; + + status = SYS$QIOW (0, channel, IO$_DELETE, &cmu_iosb, 0, 0, + 0, 0, 0, 0, 0, 0); + status = SYS$DASSGN (channel); + + return (0); + } + + int netread (channel, buffer, length) + int channel; + char *buffer; + int length; + { + int status; + + if (length > 1500) length = 1500; + status = SYS$QIOW (0, channel, IO$_READVBLK, &cmu_iosb, 0, 0, + buffer, length, 0, 0, 0, 0); + if ((status & 1) == 0) + return (-1); + if ((cmu_iosb.status & 1) == 0) { + if (cmu_iosb.status == 44) + exit (cmu_iosb.xxx); + return (-1); + } + return (cmu_iosb.size); + } + + int netwrite (channel, buffer, length) + int channel; + char *buffer; + int length; + { + int status; + + status = SYS$QIOW (0, channel, IO$_WRITEVBLK, &cmu_iosb, 0, 0, + buffer, length, 0, 1, 0, 0); + if ((status & 1) == 0) + return (-1); + if ((cmu_iosb.status & 1) == 0) { + if (cmu_iosb.status == 44) + exit (cmu_iosb.xxx); + return (-1); + } + return (cmu_iosb.size); + } + + #endif /* CMUIP */ + + + + /* * Checks to see if Remote server is up.. */ *************** *** 636,639 **** --- 788,793 ---- ; } + +