diff options
Diffstat (limited to 'www/lynx/patches.v6/patch-af')
-rw-r--r-- | www/lynx/patches.v6/patch-af | 216 |
1 files changed, 0 insertions, 216 deletions
diff --git a/www/lynx/patches.v6/patch-af b/www/lynx/patches.v6/patch-af deleted file mode 100644 index c1b29fa6bcd..00000000000 --- a/www/lynx/patches.v6/patch-af +++ /dev/null @@ -1,216 +0,0 @@ -$NetBSD: patch-af,v 1.2 2000/01/15 22:55:48 hubertf Exp $ - -diff -x *.orig -urN ./WWW/Library/Implementation/HTACL.c /usr/pkgsrc/www/lynx/work.unpatched/lynx2-8-2/WWW/Library/Implementation/HTACL.c ---- ./WWW/Library/Implementation/HTACL.c Thu Jan 1 01:00:00 1970 -+++ /usr/pkgsrc/www/lynx/work.unpatched/lynx2-8-2/WWW/Library/Implementation/HTACL.c Sat Jan 15 07:57:17 2000 -@@ -0,0 +1,210 @@ -+ -+/* MODULE HTACL.c -+** ACCESS CONTROL LIST ROUTINES -+** -+** AUTHORS: -+** AL Ari Luotonen luotonen@dxcern.cern.ch -+** MD Mark Donszelmann duns@vxdeop.cern.ch -+** -+** HISTORY: -+** 8 Nov 93 MD (VMS only) case insensitive compare reading acl entry, filename -+** -+** -+** BUGS: -+** -+** -+*/ -+ -+ -+#include <HTUtils.h> -+#include <HTAAFile.h> /* File routines */ -+#include <HTGroup.h> /* GroupDef */ -+#include <HTACL.h> /* Implemented here */ -+ -+#include <LYLeaks.h> -+ -+/* PRIVATE HTAA_getAclFilename() -+** RESOLVE THE FULL PATHNAME OF ACL FILE FOR A GIVEN FILE -+** ON ENTRY: -+** path is the pathname of the file for which to -+** ACL file should be found. -+** -+** ACL filename is computed by replacing -+** the filename by .www_acl in the pathname -+** (this is done to a local copy, of course). -+** -+** ON EXIT: -+** returns the absolute pathname of ACL file -+** (which is automatically freed next time -+** this fuction is called). -+*/ -+PRIVATE char *HTAA_getAclFilename ARGS1(CONST char *, pathname) -+{ -+ static char * local_copy = NULL; -+ static char * acl_path = NULL; -+ char * directory = NULL; -+ char * filename = NULL; -+ -+ StrAllocCopy(local_copy, pathname); /* Also frees local_copy */ -+ /* from previous call. */ -+ -+ directory = local_copy; -+ filename = strrchr(directory, '/'); -+ if (!filename) { /* No path in front of filename */ -+ directory = "."; /* So use current directory */ -+ filename = local_copy; /* and the pathname itself is the filename */ -+ } -+ else { -+ *filename = '\0'; /* Truncate filename off from directory path */ -+ filename++; /* and the filename begins from the next character */ -+ } -+ -+ StrAllocCopy(acl_path, directory); /* Also frees acl_path */ -+ /* from previous call. */ -+ StrAllocCat(acl_path, "/"); -+ StrAllocCat(acl_path, ACL_FILE_NAME); -+ -+ return acl_path; -+} -+ -+ -+/* PUBLIC HTAA_openAcl() -+** OPEN THE ACL FILE FOR THE GIVEN DOCUMENT -+** ON ENTRY: -+** pathname is the absolute pathname of -+** the file to be accessed. -+** -+** ON EXIT: -+** returns the FILE* to open ACL. -+** NULL, if ACL not found. -+*/ -+PUBLIC FILE *HTAA_openAcl ARGS1(CONST char *, pathname) -+{ -+ return fopen(HTAA_getAclFilename(pathname), "r"); -+} -+ -+ -+/* PUBLIC HTAA_closeAcl() -+** CLOSE ACL FILE -+** ON ENTRY: -+** acl_file is Access Control List file to close. -+** -+** ON EXIT: -+** returns nothing. -+*/ -+PUBLIC void HTAA_closeAcl ARGS1(FILE *, acl_file) -+{ -+ if (acl_file) fclose(acl_file); -+} -+ -+ -+/* PUBLIC HTAA_getAclEntry() -+** CONSULT THE ACCESS CONTROL LIST AND -+** GIVE A LIST OF GROUPS (AND USERS) -+** AUTHORIZED TO ACCESS A GIVEN FILE -+** ON ENTRY: -+** acl_file is an open ACL file. -+** pathname is the absolute pathname of -+** the file to be accessed. -+** method is the method for which access is wanted. -+** -+** ALC FILE FORMAT: -+** -+** template : method, method, ... : group@addr, user, group, ... -+** -+** The last item is in fact in exactly the same format as -+** group definition in group file, i.e. everything that -+** follows the 'groupname:' part, -+** e.g. -+** user, group, user@address, group@address, -+** (user,group,...)@(address, address, ...) -+** -+** ON EXIT: -+** returns NULL, if there is no entry for the file in the ACL, -+** or ACL doesn't exist. -+** If there is, a GroupDef object containing the -+** group and user names allowed to access the file -+** is returned (this is automatically freed -+** next time this function is called). -+** IMPORTANT: -+** Returns the first entry with matching template and -+** method. This function should be called multiple times -+** to process all the valid entries (until it returns NULL). -+** This is because there can be multiple entries like: -+** -+** *.html : get,put : ari,timbl,robert -+** *.html : get : jim,james,jonathan,jojo -+** -+** NOTE: -+** The returned group definition may well contain references -+** to groups defined in group file. Therefore these references -+** must be resolved according to that rule file by function -+** HTAA_resolveGroupReferences() (group file is read in by -+** HTAA_readGroupFile()) and after that access authorization -+** can be checked with function HTAA_userAndInetGroup(). -+*/ -+PUBLIC GroupDef *HTAA_getAclEntry ARGS3(FILE *, acl_file, -+ CONST char *, pathname, -+ HTAAMethod, method) -+{ -+ static GroupDef * group_def = NULL; -+ CONST char * filename; -+ int len; -+ char *buf; -+ -+ if (!acl_file) return NULL; /* ACL doesn't exist */ -+ -+ if (group_def) { -+ GroupDef_delete(group_def); /* From previous call */ -+ group_def = NULL; -+ } -+ -+ if (!(filename = strrchr(pathname, '/'))) -+ filename = pathname; -+ else filename++; /* Skip slash */ -+ -+ len = strlen(filename); -+ -+ if (!(buf = (char*)malloc((strlen(filename)+2)*sizeof(char)))) -+ outofmem(__FILE__, "HTAA_getAuthorizedGroups"); -+ -+ while (EOF != HTAAFile_readField(acl_file, buf, len+1)) { -+#ifdef VMS -+ if (HTAA_templateCaseMatch(buf, filename)) -+#else /* not VMS */ -+ if (HTAA_templateMatch(buf, filename)) -+#endif /* not VMS */ -+ { -+ HTList *methods = HTList_new(); -+ HTAAFile_readList(acl_file, methods, MAX_METHODNAME_LEN); -+ CTRACE(tfp, "Filename '%s' matched template '%s', allowed methods:", -+ filename, buf); -+ if (HTAAMethod_inList(method, methods)) { /* right method? */ -+ CTRACE(tfp, " METHOD OK\n"); -+ HTList_delete(methods); -+ methods = NULL; -+ FREE(buf); -+ group_def = HTAA_parseGroupDef(acl_file); -+ /* -+ ** HTAA_parseGroupDef() already reads the record -+ ** separator so we don't call HTAAFile_nextRec(). -+ */ -+ return group_def; -+ } else { -+ CTRACE(tfp, " METHOD NOT FOUND\n"); -+ } -+ HTList_delete(methods); -+ methods = NULL; -+ } /* if template match */ -+ else { -+ CTRACE(tfp, "Filename '%s' didn't match template '%s'\n", -+ filename, buf); -+ } -+ -+ HTAAFile_nextRec(acl_file); -+ } /* while not eof */ -+ FREE(buf); -+ -+ return NULL; /* No entry for requested file */ -+ /* (or an empty entry). */ -+} |