]> granicus.if.org Git - php/commitdiff
Fixed behavior with empty doc_root.
authorStefan Roehrich <sr@php.net>
Tue, 7 Sep 1999 19:05:37 +0000 (19:05 +0000)
committerStefan Roehrich <sr@php.net>
Tue, 7 Sep 1999 19:05:37 +0000 (19:05 +0000)
gzgetss() now uses _php3_strip_tags.

ext/zlib/zlib.c

index a5bfc280f6617213a4c0a4a66e9bf5936a0e523f..ab763c1b117e1f29c82607afb2dcbf6b4b161c08 100644 (file)
@@ -203,7 +203,11 @@ static gzFile *php3_gzopen_with_path(char *filename, char *mode, char *path, cha
        if (*filename == '/') {
 #endif
                if (PG(safe_mode)) {
-                       snprintf(trypath,MAXPATHLEN,"%s%s",PG(doc_root),filename);
+                       if(PG(doc_root)) {
+                               snprintf(trypath, MAXPATHLEN, "%s%s", PG(doc_root), filename);
+                       } else {
+                               strncpy(trypath,filename,MAXPATHLEN);
+                       }
                        if (!_php3_checkuid(trypath,2)) {
                                return(NULL);
                        }
@@ -478,8 +482,8 @@ PHP_FUNCTION(gzgetss)
 {
        pval *fd, *bytes;
        gzFile *zp;
-       int len, br;
-       char *buf, *p, *rbuf, *rp, c, lc;
+       int len;
+       char *buf;
        ZLIBLS_FETCH();
        
        if (ARG_COUNT(ht) != 2 || getParameters(ht, 2, &fd, &bytes) == FAILURE) {
@@ -500,86 +504,9 @@ PHP_FUNCTION(gzgetss)
                RETURN_FALSE;
        }
 
-       rbuf = estrdup(buf);
-       c = *buf;
-       lc = '\0';
-       p = buf;
-       rp = rbuf;
-       br = 0;
-
-       while (c) {
-               switch (c) {
-                       case '<':
-                               if (ZLIBG(gzgetss_state) == 0) {
-                                       lc = '<';
-                                       ZLIBG(gzgetss_state) = 1;
-                               }
-                               break;
-
-                       case '(':
-                               if (ZLIBG(gzgetss_state) == 2) {
-                                       if (lc != '\"') {
-                                               lc = '(';
-                                               br++;
-                                       }
-                               } else if (ZLIBG(gzgetss_state) == 0) {
-                                       *(rp++) = c;
-                               }
-                               break;  
-
-                       case ')':
-                               if (ZLIBG(gzgetss_state) == 2) {
-                                       if (lc != '\"') {
-                                               lc = ')';
-                                               br--;
-                                       }
-                               } else if (ZLIBG(gzgetss_state) == 0) {
-                                       *(rp++) = c;
-                               }
-                               break;  
-
-                       case '>':
-                               if (ZLIBG(gzgetss_state) == 1) {
-                                       lc = '>';
-                                       ZLIBG(gzgetss_state) = 0;
-                               } else if (ZLIBG(gzgetss_state) == 2) {
-                                       if (!br && lc != '\"') {
-                                               ZLIBG(gzgetss_state) = 0;
-                                       }
-                               }
-                               break;
-
-                       case '\"':
-                               if (ZLIBG(gzgetss_state) == 2) {
-                                       if (lc == '\"') {
-                                               lc = '\0';
-                                       } else if (lc != '\\') {
-                                               lc = '\"';
-                                       }
-                               } else if (ZLIBG(gzgetss_state) == 0) {
-                                       *(rp++) = c;
-                               }
-                               break;
-
-                       case '?':
-                               if (ZLIBG(gzgetss_state)==1) {
-                                       br=0;
-                                       ZLIBG(gzgetss_state)=2;
-                                       break;
-                               }
-                               /* fall-through */
-
-                       default:
-                               if (ZLIBG(gzgetss_state) == 0) {
-                                       *(rp++) = c;
-                               }       
-               }
-               c = *(++p);
-       }       
-       *rp = '\0';
-       efree(buf);
-       RETVAL_STRING(rbuf,1);
-       efree(rbuf);
+       _php3_strip_tags(buf, ZLIBG(gzgetss_state));
+       RETURN_STRING(buf, 0);
+       
 }
 /* }}} */