Commit 0f4e2136 authored by Richard Levitte's avatar Richard Levitte
Browse files

Add more diversity to the possible log levels. Now we have full

coverage for all syslog level.
parent d03e0f34
Loading
Loading
Loading
Loading
+41 −15
Original line number Diff line number Diff line
@@ -170,7 +170,36 @@ static int MS_CALLBACK slg_write(BIO *b, const char *in, int inl)
	int ret= inl;
	char* buf;
	char* pp;
	int priority;
	int priority, i;
	static struct
		{
		int strl;
		char str[10];
		int log_level;
		}
	mapping[] =
		{
		{ 6, "PANIC ", LOG_EMERG },
		{ 6, "EMERG ", LOG_EMERG },
		{ 4, "EMR ", LOG_EMERG },
		{ 6, "ALERT ", LOG_ALERT },
		{ 4, "ALR ", LOG_ALERT },
		{ 5, "CRIT ", LOG_CRIT },
		{ 4, "CRI ", LOG_CRIT },
		{ 6, "ERROR ", LOG_ERR },
		{ 4, "ERR ", LOG_ERR },
		{ 8, "WARNING ", LOG_WARNING },
		{ 5, "WARN ", LOG_WARNING },
		{ 4, "WAR ", LOG_WARNING },
		{ 7, "NOTICE ", LOG_NOTICE },
		{ 5, "NOTE ", LOG_NOTICE },
		{ 4, "NOT ", LOG_NOTICE },
		{ 5, "INFO ", LOG_INFO },
		{ 4, "INF ", LOG_INFO },
		{ 6, "DEBUG ", LOG_DEBUG },
		{ 4, "DBG ", LOG_DEBUG },
		{ 0, "", LOG_ERR } /* The default */
		};

	if((buf= (char *)OPENSSL_malloc(inl+ 1)) == NULL){
		return(0);
@@ -178,19 +207,10 @@ static int MS_CALLBACK slg_write(BIO *b, const char *in, int inl)
	strncpy(buf, in, inl);
	buf[inl]= '\0';

	if(strncmp(buf, "ERR ", 4) == 0){
		priority= LOG_ERR;
		pp= buf+ 4;
	}else if(strncmp(buf, "WAR ", 4) == 0){
		priority= LOG_WARNING;
		pp= buf+ 4;
	}else if(strncmp(buf, "INF ", 4) == 0){
		priority= LOG_INFO;
		pp= buf+ 4;
	}else{
		priority= LOG_ERR;
		pp= buf;
	}
	i = 0;
	while(strncmp(buf, mapping[i].str, mapping[i].strl) != 0) i++;
	priority = mapping[i].log_level;
	pp = buf + mapping[i].strl;

	xsyslog(b, priority, pp);

@@ -257,16 +277,22 @@ static void xsyslog(BIO *bp, int priority, const char *string)

	switch (priority)
		{
	case LOG_EMERG:
	case LOG_ALERT:
	case LOG_CRIT:
	case LOG_ERR:
		evtype = EVENTLOG_ERROR_TYPE;
		break;
	case LOG_WARNING:
		evtype = EVENTLOG_WARNING_TYPE;
		break;
	case LOG_NOTICE:
	case LOG_INFO:
	case LOG_DEBUG:
		evtype = EVENTLOG_INFORMATION_TYPE;
		break;
	default:
	default:		/* Should never happen, but set it
				   as error anyway. */
		evtype = EVENTLOG_ERROR_TYPE;
		break;
		}