mirror of
https://github.com/rsyslog/rsyslog.git
synced 2025-12-19 02:10:42 +01:00
bugfix: fixed small memory leak in template regular expressions
This commit is contained in:
parent
51bfe0339f
commit
f574400bb5
@ -1,5 +1,5 @@
|
||||
---------------------------------------------------------------------------
|
||||
Version 3.12.5 (rgerhards), 2008-03-??
|
||||
Version 3.12.5 (rgerhards), 2008-03-28
|
||||
- bugfix: QHOUR and HHOUR properties were wrongly calculated
|
||||
- bugfix: fixed memory leaks in stream class and imfile
|
||||
- bugfix: $ModDir did invalid bounds checking, potential overlow in
|
||||
@ -12,7 +12,7 @@ Version 3.12.5 (rgerhards), 2008-03-??
|
||||
- automatically generated compatibility config lines are now also
|
||||
logged so that a user can diagnose problems with them
|
||||
- added compatibility mode for -a, -o and -p options
|
||||
- MILESTONE: compatibility mode processing finished
|
||||
- compatibility mode processing finished
|
||||
- changed default file output format to include high-precision timestamps
|
||||
- added a buid-in template for previous syslogd file format
|
||||
- added new $ActionFileDefaultTemplate directive
|
||||
@ -21,6 +21,8 @@ Version 3.12.5 (rgerhards), 2008-03-??
|
||||
- added new $ActionForwardDefaultTemplate directive
|
||||
- added new $ActionGSSForwardDefaultTemplate directive
|
||||
- added build-in templates for easier configuration
|
||||
- bugfix: fixed small memory leak in tcpclt.c
|
||||
- bugfix: fixed small memory leak in template regular expressions
|
||||
---------------------------------------------------------------------------
|
||||
Version 3.12.4 (rgerhards), 2008-03-25
|
||||
- Greatly enhanced rsyslogd's file write performance by disabling
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html><head><title>rsyslog documentation</title></head>
|
||||
<html><head><title>rsyslog documentation</title>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<h1>RSyslog - Documentation</h1>
|
||||
<p><b><a href="http://www.rsyslog.com/">Rsyslog</a>
|
||||
@ -7,12 +9,15 @@ is an enhanced syslogd
|
||||
supporting, among others, <a href="rsyslog_mysql.html">MySQL</a>,
|
||||
PostgreSQL, <a href="http://wiki.rsyslog.com/index.php/FailoverSyslogServer">failover
|
||||
log destinations</a>, syslog/tcp, fine grain output format
|
||||
control, and the ability to filter on any message part.</b>
|
||||
control, high precision timestamps, queued operations and the ability to filter on any message
|
||||
part.</b>
|
||||
It is quite compatible to stock sysklogd and can be used as a drop-in
|
||||
replacement. Its <a href="features.html">
|
||||
advanced features</a> make it suitable for enterprise-class, <a href="rsyslog_stunnel.html">encryption protected syslog</a>
|
||||
relay chains while at the same time being very easy to setup for the
|
||||
novice user. And as we know what enterprise users really need, there is also <a href="professional_support.html">professional rsyslog support</a> available directly from the source!</p>
|
||||
novice user. And as we know what enterprise users really need, there is
|
||||
also <a href="professional_support.html">professional
|
||||
rsyslog support</a> available directly from the source!</p>
|
||||
<p><b>Visit the <i> <a href="status.html">rsyslog
|
||||
status page</a></i></b> to obtain current
|
||||
version information and ports. <b>If you like rsyslog, you might
|
||||
@ -20,23 +25,13 @@ want to lend us a helping hand. </b>It doesn't require a lot of
|
||||
time - even a single mouse click helps. Learn <a href="how2help.html">how to help the rsyslog project</a>.
|
||||
Due to popular demand, there is now a <a href="rsyslog_ng_comparison.html">side-by-side comparison
|
||||
between rsyslog and syslog-ng</a>.</p>
|
||||
<p><b><font color="#ff0000">Warning: rsyslog
|
||||
v3 is under active development and as of this writing has a number of
|
||||
backwards compatibility issues. </font>If you currently use v2,
|
||||
<font color="#ff0000"><a href="v3compatibility.html">be
|
||||
sure to read the rsyslog v3 compatibility document!</a></font>
|
||||
This also applies if you upgrade from stock sysklogd - you need to make
|
||||
some configuration file changes. </b><br>
|
||||
Documentation for 3.x is currently sparse. If you need assistance,
|
||||
please <a href="http://www.rsyslog.com/PNphpBB2.phtml">post
|
||||
in the rsyslog forums</a>!<br>
|
||||
<b><font color="#ff0000">If you do not like this,
|
||||
use a <a href="http://www.rsyslog.com/Downloads-req-viewsdownload-sid-1.phtml">stable
|
||||
branch release</a>!</font></b></p>
|
||||
<p><b>Follow the links below for the</b></p>
|
||||
<ul>
|
||||
<li><a href="man_rsyslogd.html">rsyslogd man page</a>
|
||||
(somewhat outdated)</li>
|
||||
<p>If you are upgrading from rsyslog v2 or stock sysklogd,
|
||||
<a href="v3compatibility.html">be
|
||||
sure to read the rsyslog v3 compatibility document!</a> It will work even
|
||||
if you do not read the doc, but doing so will definitely improve your experience.</p>
|
||||
<p><span style="font-weight: bold;"></span><b>Follow
|
||||
the links below for the</b><br></p><ul>
|
||||
|
||||
<li><a href="rsyslog_conf.html">configuration file
|
||||
syntax (rsyslog.conf)</a></li>
|
||||
<li> <a href="property_replacer.html">property
|
||||
@ -50,7 +45,8 @@ packages</a></li>
|
||||
<li><a href="generic_design.html">backgrounder on
|
||||
generic syslog application design</a><!-- not good as it currently is ;) <li><a href="contributors.html">contributor "Hall of Fame"</a>--></li>
|
||||
<li><a href="modules.html">description of rsyslog
|
||||
modules</a></li>
|
||||
modules</a></li><li><a href="man_rsyslogd.html">rsyslogd man page</a>
|
||||
(heavily outdated)</li>
|
||||
</ul>
|
||||
<p><b>We have some in-depth papers on</b></p>
|
||||
<ul>
|
||||
@ -86,16 +82,16 @@ to use the doc that came with it.</p>
|
||||
<p><b>You can also browse the following online resources:</b></p>
|
||||
<ul>
|
||||
<li>the <a href="http://wiki.rsyslog.com/">rsyslog
|
||||
wiki</a>, a community resource</li>
|
||||
wiki</a>, a community resource which includes <a href="http://wiki.rsyslog.com/index.php/Configuration_Samples">rsyslog configuration examples</a></li>
|
||||
<li><a href="http://www.rsyslog.com/module-Static_Docs-view-f-manual.html.phtml">rsyslog
|
||||
online documentation</a></li>
|
||||
<li><a href="http://www.rsyslog.com/Topic3.phtml">rsyslog
|
||||
FAQ</a></li>
|
||||
online documentation (most current version only)</a></li>
|
||||
|
||||
<li><a href="http://www.rsyslog.com/PNphpBB2.phtml">rsyslog
|
||||
discussion forum</a></li>
|
||||
discussion forum - use this for technical support</a></li>
|
||||
<li><a href="http://www.rsyslog.com/Topic4.phtml">rsyslog
|
||||
change log</a></li>
|
||||
<li><a href="http://www.monitorware.com/en/syslog-enabled-products/">syslog
|
||||
<li><a href="http://www.rsyslog.com/Topic3.phtml">rsyslog
|
||||
FAQ</a></li><li><a href="http://www.monitorware.com/en/syslog-enabled-products/">syslog
|
||||
device configuration guide</a> (off-site)</li>
|
||||
</ul>
|
||||
<p>And don't forget about the <a href="http://lists.adiscon.net/mailman/listinfo/rsyslog">rsyslog
|
||||
|
||||
28
template.c
28
template.c
@ -612,9 +612,8 @@ static int do_Parameter(unsigned char **pp, struct template *pTpl)
|
||||
longitud = regex_end - p;
|
||||
/* Malloc for the regex string */
|
||||
regex_char = (unsigned char *) malloc(longitud + 1);
|
||||
if (regex_char == NULL) {
|
||||
dbgprintf
|
||||
("Could not allocate memory for template parameter!\n");
|
||||
if(regex_char == NULL) {
|
||||
dbgprintf("Could not allocate memory for template parameter!\n");
|
||||
pTpe->data.field.has_regex = 0;
|
||||
return 1;
|
||||
/* TODO: RGer: check if we can recover better... (probably not) */
|
||||
@ -629,6 +628,7 @@ static int do_Parameter(unsigned char **pp, struct template *pTpl)
|
||||
/* Now i compile the regex */
|
||||
/* Remember that the re is an attribute of the Template entry */
|
||||
if((iRetLocal = objUse(regexp, LM_REGEXP_FILENAME)) == RS_RET_OK) {
|
||||
dbgprintf("compile data.field.re ptr: %p (pTpe %p)\n", (&(pTpe->data.field.re)), pTpe);
|
||||
if(regexp.regcomp(&(pTpe->data.field.re), (char*) regex_char, 0) != 0) {
|
||||
dbgprintf("error: can not compile regex: '%s'\n", regex_char);
|
||||
pTpe->data.field.has_regex = 2;
|
||||
@ -849,6 +849,8 @@ void tplDeleteAll(void)
|
||||
{
|
||||
struct template *pTpl, *pTplDel;
|
||||
struct templateEntry *pTpe, *pTpeDel;
|
||||
rsRetVal iRetLocal;
|
||||
BEGINfunc
|
||||
|
||||
pTpl = tplRoot;
|
||||
while(pTpl != NULL) {
|
||||
@ -868,6 +870,12 @@ void tplDeleteAll(void)
|
||||
free(pTpeDel->data.constant.pConstant);
|
||||
break;
|
||||
case FIELD:
|
||||
/* check if we have a regexp and, if so, delete it */
|
||||
if(pTpeDel->data.field.has_regex != 0) {
|
||||
if((iRetLocal = objUse(regexp, LM_REGEXP_FILENAME)) == RS_RET_OK) {
|
||||
regexp.regfree(&(pTpeDel->data.field.re));
|
||||
}
|
||||
}
|
||||
/*dbgprintf("(FIELD), value: '%s'", pTpeDel->data.field.pPropRepl);*/
|
||||
free(pTpeDel->data.field.pPropRepl);
|
||||
break;
|
||||
@ -881,15 +889,20 @@ void tplDeleteAll(void)
|
||||
free(pTplDel->pszName);
|
||||
free(pTplDel);
|
||||
}
|
||||
ENDfunc
|
||||
}
|
||||
|
||||
|
||||
/* Destroy all templates obtained from conf file
|
||||
* preserving hadcoded ones. This is called from init().
|
||||
* preserving hardcoded ones. This is called from init().
|
||||
*/
|
||||
void tplDeleteNew(void)
|
||||
{
|
||||
struct template *pTpl, *pTplDel;
|
||||
struct templateEntry *pTpe, *pTpeDel;
|
||||
rsRetVal iRetLocal;
|
||||
|
||||
BEGINfunc
|
||||
|
||||
if(tplRoot == NULL || tplLastStatic == NULL)
|
||||
return;
|
||||
@ -914,6 +927,12 @@ void tplDeleteNew(void)
|
||||
free(pTpeDel->data.constant.pConstant);
|
||||
break;
|
||||
case FIELD:
|
||||
/* check if we have a regexp and, if so, delete it */
|
||||
if(pTpeDel->data.field.has_regex != 0) {
|
||||
if((iRetLocal = objUse(regexp, LM_REGEXP_FILENAME)) == RS_RET_OK) {
|
||||
regexp.regfree(&(pTpeDel->data.field.re));
|
||||
}
|
||||
}
|
||||
/*dbgprintf("(FIELD), value: '%s'", pTpeDel->data.field.pPropRepl);*/
|
||||
free(pTpeDel->data.field.pPropRepl);
|
||||
break;
|
||||
@ -927,6 +946,7 @@ void tplDeleteNew(void)
|
||||
free(pTplDel->pszName);
|
||||
free(pTplDel);
|
||||
}
|
||||
ENDfunc
|
||||
}
|
||||
|
||||
/* Store the pointer to the last hardcoded teplate */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user