ben 97/12/26 07:52:38
Modified: src CHANGES
src/main util_script.c
Log:
Check for executables by looking at the header.
Submitted by: Jim Patterson <[EMAIL PROTECTED]>
Reviewed by: Ben Laurie
Revision Changes Path
1.542 +4 -0 apachen/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /export/home/cvs/apachen/src/CHANGES,v
retrieving revision 1.541
retrieving revision 1.542
diff -u -r1.541 -r1.542
--- CHANGES 1997/12/24 04:36:11 1.541
+++ CHANGES 1997/12/26 15:52:35 1.542
@@ -1,5 +1,9 @@
Changes with Apache 1.3b4
+ *) WIN32: Check for binaries by looking for the executable header
+ instead of counting control characters.
+ [Jim Patterson <[EMAIL PROTECTED]>] PR#1340
+
*) ap_snprintf() moved from main/util_snprintf.c to ap/ap_snprintf.c
so the functionality is available to applications other than the
server itself (like the src/support tools). [Ken Coar]
1.87 +4 -17 apachen/src/main/util_script.c
Index: util_script.c
===================================================================
RCS file: /export/home/cvs/apachen/src/main/util_script.c,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -r1.86 -r1.87
--- util_script.c 1997/12/07 21:49:54 1.86
+++ util_script.c 1997/12/26 15:52:37 1.87
@@ -728,23 +728,10 @@
memmove(interpreter+2,interpreter+i,strlen(interpreter+i)+1);
}
else {
- /*
- * check and see how many control chars. On
- * that basis, I will classify it as a text
- * or binary file
- */
- int ctrl = 0;
-
- for (i = 0; i < sz; i++) {
- static char *spec = "\r\n\t";
- if (iscntrl(interpreter[i]) && !strchr(spec,
interpreter[i]))
- ctrl++;
- }
- if (ctrl > sz / 10)
- is_binary = 1;
- else
- is_binary = 0;
-
+ /* Check to see if it's a executable */
+ IMAGE_DOS_HEADER *hdr = (IMAGE_DOS_HEADER*)interpreter;
+ if (hdr->e_magic == IMAGE_DOS_SIGNATURE && hdr->e_cblp < 512)
+ is_binary = 1;
}
}