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);
}
{
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) {
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);
+
}
/* }}} */