mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-11 10:20:02 -04:00
[v9_8] strdup journal filename
3646. [bug] Journal filename string could be set incorrectly,
causing garbage in log messages. [RT #34738]
(cherry picked from commit 18df9e628e)
This commit is contained in:
parent
c8a759551e
commit
7115fc5c43
2 changed files with 12 additions and 3 deletions
3
CHANGES
3
CHANGES
|
|
@ -1,3 +1,6 @@
|
|||
3646. [bug] Journal filename string could be set incorrectly,
|
||||
causing garbage in log messages. [RT #34738]
|
||||
|
||||
--- 9.8.6 released ---
|
||||
|
||||
3638. [cleanup] Add the ability to handle ENOPROTOOPT in case it is
|
||||
|
|
|
|||
|
|
@ -299,7 +299,7 @@ struct dns_journal {
|
|||
unsigned int magic; /*%< JOUR */
|
||||
isc_mem_t *mctx; /*%< Memory context */
|
||||
journal_state_t state;
|
||||
const char *filename; /*%< Journal file name */
|
||||
char *filename; /*%< Journal file name */
|
||||
FILE * fp; /*%< File handle */
|
||||
isc_offset_t offset; /*%< Current file offset */
|
||||
journal_header_t header; /*%< In-core journal header */
|
||||
|
|
@ -554,10 +554,13 @@ journal_open(isc_mem_t *mctx, const char *filename, isc_boolean_t write,
|
|||
j->mctx = mctx;
|
||||
j->state = JOURNAL_STATE_INVALID;
|
||||
j->fp = NULL;
|
||||
j->filename = filename;
|
||||
j->filename = isc_mem_strdup(mctx, filename);
|
||||
j->index = NULL;
|
||||
j->rawindex = NULL;
|
||||
|
||||
if (j->filename == NULL)
|
||||
FAIL(ISC_R_NOMEMORY);
|
||||
|
||||
result = isc_stdio_open(j->filename, write ? "rb+" : "rb", &fp);
|
||||
|
||||
if (result == ISC_R_FILENOTFOUND) {
|
||||
|
|
@ -660,6 +663,8 @@ journal_open(isc_mem_t *mctx, const char *filename, isc_boolean_t write,
|
|||
sizeof(journal_rawpos_t));
|
||||
j->index = NULL;
|
||||
}
|
||||
if (j->filename != NULL)
|
||||
isc_mem_free(j->mctx, j->filename);
|
||||
if (j->fp != NULL)
|
||||
(void)isc_stdio_close(j->fp);
|
||||
isc_mem_put(j->mctx, j, sizeof(*j));
|
||||
|
|
@ -1200,7 +1205,8 @@ dns_journal_destroy(dns_journal_t **journalp) {
|
|||
isc_mem_put(j->mctx, j->it.target.base, j->it.target.length);
|
||||
if (j->it.source.base != NULL)
|
||||
isc_mem_put(j->mctx, j->it.source.base, j->it.source.length);
|
||||
|
||||
if (j->filename != NULL)
|
||||
isc_mem_free(j->mctx, j->filename);
|
||||
if (j->fp != NULL)
|
||||
(void)isc_stdio_close(j->fp);
|
||||
j->magic = 0;
|
||||
|
|
|
|||
Loading…
Reference in a new issue