[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.217.128.191: ~ $
#include <sys/types.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <limits.h>
#include <stdlib.h>

#include "regex.h"
#include "utils.h"
#include "regerror.ih"
#include "php.h"

/*
 = #define	REG_OKAY	 0
 = #define	REG_NOMATCH	 1
 = #define	REG_BADPAT	 2
 = #define	REG_ECOLLATE	 3
 = #define	REG_ECTYPE	 4
 = #define	REG_EESCAPE	 5
 = #define	REG_ESUBREG	 6
 = #define	REG_EBRACK	 7
 = #define	REG_EPAREN	 8
 = #define	REG_EBRACE	 9
 = #define	REG_BADBR	10
 = #define	REG_ERANGE	11
 = #define	REG_ESPACE	12
 = #define	REG_BADRPT	13
 = #define	REG_EMPTY	14
 = #define	REG_ASSERT	15
 = #define	REG_INVARG	16
 = #define	REG_ATOI	255	// convert name to number (!)
 = #define	REG_ITOA	0400	// convert number to name (!)
 */
static const struct rerr {
	int code;
	const char *name;
	const char *explain;
} rerrs[] = {
	{REG_OKAY,	"REG_OKAY",	"no errors detected"},
	{REG_NOMATCH,	"REG_NOMATCH",	"regexec() failed to match"},
	{REG_BADPAT,	"REG_BADPAT",	"invalid regular expression"},
	{REG_ECOLLATE,	"REG_ECOLLATE",	"invalid collating element"},
	{REG_ECTYPE,	"REG_ECTYPE",	"invalid character class"},
	{REG_EESCAPE,	"REG_EESCAPE",	"trailing backslash (\\)"},
	{REG_ESUBREG,	"REG_ESUBREG",	"invalid backreference number"},
	{REG_EBRACK,	"REG_EBRACK",	"brackets ([ ]) not balanced"},
	{REG_EPAREN,	"REG_EPAREN",	"parentheses not balanced"},
	{REG_EBRACE,	"REG_EBRACE",	"braces not balanced"},
	{REG_BADBR,	"REG_BADBR",	"invalid repetition count(s)"},
	{REG_ERANGE,	"REG_ERANGE",	"invalid character range"},
	{REG_ESPACE,	"REG_ESPACE",	"out of memory"},
	{REG_BADRPT,	"REG_BADRPT",	"repetition-operator operand invalid"},
	{REG_EMPTY,	"REG_EMPTY",	"empty (sub)expression"},
	{REG_ASSERT,	"REG_ASSERT",	"\"can't happen\" -- you found a bug"},
	{REG_INVARG,	"REG_INVARG",	"invalid argument to regex routine"},
	{-1,		"",		"*** unknown regexp error code ***"},
};

/*
 - regerror - the interface to error numbers
 = API_EXPORT(size_t) regerror(int, const regex_t *, char *, size_t);
 */
/* ARGSUSED */
API_EXPORT(size_t)
regerror(
int errcode,
const regex_t *preg,
char *errbuf,
size_t errbuf_size)
{
	register const struct rerr *r;
	register size_t len;
	register int target = errcode &~ REG_ITOA;
	register const char *s;
	char convbuf[50];

	if (errcode == REG_ATOI)
		s = regatoi(preg, convbuf, sizeof(convbuf));
	else {
		for (r = rerrs; r->code >= 0; r++)
			if (r->code == target)
				break;
	
		if (errcode&REG_ITOA) {
			if (r->code >= 0) {
				(void) strncpy(convbuf, r->name, sizeof(convbuf) - 1);
				convbuf[sizeof(convbuf) - 1] = '\0';
			} else {
				snprintf(convbuf, sizeof(convbuf), "REG_0x%x", target);
			}
			assert(strlen(convbuf) < sizeof(convbuf));
			s = convbuf;
		} else
			s = r->explain;
	}

	len = strlen(s) + 1;
	if (errbuf_size > 0) {
		if (errbuf_size > len)
			(void) strcpy(errbuf, s);
		else {
			(void) strncpy(errbuf, s, errbuf_size-1);
			errbuf[errbuf_size-1] = '\0';
		}
	}

	return(len);
}

/*
 - regatoi - internal routine to implement REG_ATOI
 == static char *regatoi(const regex_t *preg, char *localbuf, int bufsize);
 */
static char *
regatoi(preg, localbuf, bufsize)
const regex_t *preg;
char *localbuf;
int bufsize;
{
	register const struct rerr *r;

	for (r = rerrs; r->code >= 0; r++)
		if (strcmp(r->name, preg->re_endp) == 0)
			break;
	if (r->code < 0)
		return("0");

	snprintf(localbuf, bufsize, "%d", r->code);
	return(localbuf);
}

Filemanager

Name Type Size Permission Actions
cclass.h File 992 B 0644
cname.h File 2.02 KB 0644
engine.c File 25.61 KB 0644
regcomp.c File 37.19 KB 0644
regerror.c File 3.32 KB 0644
regex.h File 2.11 KB 0644
regex2.h File 5.41 KB 0644
regexec.c File 4.2 KB 0644
regfree.c File 738 B 0644
utils.h File 501 B 0644