Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 145091 Details for
Bug 211752
net-dns/bind-9.4.1_p1 USE="dlz postgres": crash when has no rights to access PostgreSQL table
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Fixes bug 211752 and cuts temporary messages. (new version)
dlz_double-free_cut-tmp-msgs.patch (text/plain), 6.46 KB, created by
Chebotarev Roman
on 2008-03-02 15:41:18 UTC
(
hide
)
Description:
Fixes bug 211752 and cuts temporary messages. (new version)
Filename:
MIME Type:
Creator:
Chebotarev Roman
Created:
2008-03-02 15:41:18 UTC
Size:
6.46 KB
patch
obsolete
>diff -ruN bind-9.4.1_p1.orig/work/bind-9.4.1-P1/contrib/dlz/drivers/dlz_postgres_driver.c bind-9.4.1_p1.patched/work/bind-9.4.1-P1/contrib/dlz/drivers/dlz_postgres_driver.c >--- bind-9.4.1_p1.orig/work/bind-9.4.1-P1/contrib/dlz/drivers/dlz_postgres_driver.c 2005-10-26 08:57:23.000000000 +0400 >+++ bind-9.4.1_p1.patched/work/bind-9.4.1-P1/contrib/dlz/drivers/dlz_postgres_driver.c 2008-03-02 18:35:52.000000000 +0300 >@@ -51,6 +51,7 @@ > */ > > #ifdef DLZ_POSTGRES >+#define CUT_TEMP_MSGS > > #include <config.h> > #include <stdio.h> >@@ -296,11 +297,16 @@ > unsigned int dlz_thread_num = 1+(int) (1000.0*rand()/(RAND_MAX+1.0)); > > REQUIRE(*rs == NULL); >+ isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, >+ DNS_LOGMODULE_DLZ, ISC_LOG_ERROR, "New query: zone = '%s' record = '%s'", >+ zone, record); > >+#ifndef CUT_TEMP_MSGS > /* temporary logging message */ > isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, > DNS_LOGMODULE_DLZ, ISC_LOG_ERROR, > "%d Getting DBI", dlz_thread_num); >+#endif > > /* get db instance / connection */ > #ifdef ISC_PLATFORM_USETHREADS >@@ -318,10 +324,12 @@ > > #endif /* ISC_PLATFORM_USETHREADS */ > >+#ifndef CUT_TEMP_MSGS > /* temporary logging message */ > isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, > DNS_LOGMODULE_DLZ, ISC_LOG_ERROR, > "%d Got DBI - checking query", dlz_thread_num); >+#endif > > /* if DBI is null, can't do anything else */ > if (dbi == NULL) { >@@ -391,10 +399,12 @@ > goto cleanup; > } > >+#ifndef CUT_TEMP_MSGS > /* temporary logging message */ > isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, > DNS_LOGMODULE_DLZ, ISC_LOG_ERROR, > "%d checked query", dlz_thread_num); >+#endif > > /* > * was a zone string passed? If so, make it safe for use in >@@ -410,11 +420,13 @@ > dbi->zone = NULL; > } > >+#ifndef CUT_TEMP_MSGS > /* temporary logging message */ > isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, > DNS_LOGMODULE_DLZ, ISC_LOG_ERROR, > "%d did zone", dlz_thread_num); >- >+ >+#endif > /* > * was a record string passed? If so, make it safe for use in > * queries. >@@ -429,12 +441,12 @@ > dbi->record = NULL; > } > >- >+#ifndef CUT_TEMP_MSGS > /* temporary logging message */ > isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, > DNS_LOGMODULE_DLZ, ISC_LOG_ERROR, > "%d did record", dlz_thread_num); >- >+#endif > /* > * was a client string passed? If so, make it safe for use in > * queries. >@@ -449,11 +461,12 @@ > dbi->client = NULL; > } > >+#ifndef CUT_TEMP_MSGS > /* temporary logging message */ > isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, > DNS_LOGMODULE_DLZ, ISC_LOG_ERROR, > "%d did client", dlz_thread_num); >- >+#endif > /* > * what type of query are we going to run? > * this time we build the actual query to run. >@@ -486,10 +499,12 @@ > goto cleanup; > } > >+#ifndef CUT_TEMP_MSGS > /* temporary logging message */ > isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, > DNS_LOGMODULE_DLZ, ISC_LOG_ERROR, > "%d built query", dlz_thread_num); >+#endif > > /* if the querystring is null, Bummer, outta RAM. UPGRADE TIME!!! */ > if (querystring == NULL) { >@@ -497,11 +512,13 @@ > goto cleanup; > } > >+#ifndef CUT_TEMP_MSGS > /* temporary logging message */ > isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, > DNS_LOGMODULE_DLZ, ISC_LOG_ERROR, >- "%d query is '%s'", dlz_thread_num, querystring); >- >+ "%d query is '%s'", >+ dlz_thread_num, querystring); >+#endif > /* > * output the full query string during debug so we can see > * what lame error the query has. >@@ -512,11 +529,13 @@ > > /* attempt query up to 3 times. */ > for (j=0; j < 3; j++) { >+#ifndef CUT_TEMP_MSGS > /* temporary logging message */ > isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, > DNS_LOGMODULE_DLZ, ISC_LOG_ERROR, > "%d executing query for %d time", > dlz_thread_num, j); >+#endif > /* try to get result set */ > *rs = PQexec((PGconn *)dbi->dbconn, querystring ); > result = ISC_R_SUCCESS; >@@ -525,11 +544,13 @@ > * attempts. > */ > for (i=0; *rs == NULL && i < 3; i++) { >+#ifndef CUT_TEMP_MSGS > /* temporary logging message */ > isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, > DNS_LOGMODULE_DLZ, ISC_LOG_ERROR, > "%d resetting connection", > dlz_thread_num); >+#endif > result = ISC_R_FAILURE; > PQreset((PGconn *) dbi->dbconn); > /* connection ok, break inner loop */ >@@ -538,18 +559,23 @@ > } > /* result set ok, break outter loop */ > if (PQresultStatus(*rs) == PGRES_TUPLES_OK) { >+#ifndef CUT_TEMP_MSGS > /* temporary logging message */ > isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, > DNS_LOGMODULE_DLZ, ISC_LOG_ERROR, > "%d rs ok", dlz_thread_num); >+#endif > break; > } else { > /* we got a result set object, but it's not right. */ >+#ifndef CUT_TEMP_MSGS > /* temporary logging message */ > isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, > DNS_LOGMODULE_DLZ, ISC_LOG_ERROR, > "%d clearing rs", dlz_thread_num); >+#endif > PQclear(*rs); /* get rid of it */ >+ *rs = NULL; > /* in case this was the last attempt */ > result = ISC_R_FAILURE; > } >@@ -558,11 +584,12 @@ > cleanup: > /* it's always good to cleanup after yourself */ > >+#ifndef CUT_TEMP_MSGS > /* temporary logging message */ > isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, > DNS_LOGMODULE_DLZ, ISC_LOG_ERROR, > "%d cleaning up", dlz_thread_num); >- >+#endif > /* if we couldn't even allocate DBI, just return NULL */ > if (dbi == NULL) > return ISC_R_FAILURE; >@@ -581,11 +608,12 @@ > > #ifdef ISC_PLATFORM_USETHREADS > >+#ifndef CUT_TEMP_MSGS > /* temporary logging message */ > isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, > DNS_LOGMODULE_DLZ, ISC_LOG_ERROR, > "%d unlocking mutex", dlz_thread_num); >- >+#endif > /* release the lock so another thread can use this dbi */ > isc_mutex_unlock(&dbi->instance_lock); > >@@ -595,11 +623,12 @@ > if (querystring != NULL) > isc_mem_free(ns_g_mctx, querystring ); > >+#ifndef CUT_TEMP_MSGS > /* temporary logging message */ > isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, > DNS_LOGMODULE_DLZ, ISC_LOG_ERROR, > "%d returning", dlz_thread_num); >- >+#endif > /* return result */ > return result; > } >@@ -752,7 +781,7 @@ > FINDZONE, dbdata, &rs); > /* if we didn't get a result set, log an err msg. */ > if (result != ISC_R_SUCCESS) { >- if (rs != NULL) >+ if (rs != NULL) > PQclear(rs); > isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, > DNS_LOGMODULE_DLZ, ISC_LOG_ERROR,
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 211752
:
144861
|
145091
|
145117