[Freeipa-devel] [PATCH 0149] Clean up PTR record synchronization code and make it more robust
Lukas Slebodnik
lslebodn at redhat.com
Mon May 13 13:23:27 UTC 2013
On (06/05/13 14:03), Petr Spacek wrote:
>On 18.4.2013 11:04, Petr Spacek wrote:
>>Hello,
>>
>>Clean up PTR record synchronization code and make it more robust.
>>
>>PTR record synchronization was split to smaller functions.
>>Input validation, error handling and logging was improved
>>significantly.
>
>Tbabej's GCC cries about uninitialized variable 'ptr_a_equal', but we
>weren't able to find any real error.
>
>This version of the patch contains a workaround for the GCC oddities.
>
>--
>Petr^2 Spacek
>From 5e6abb29df58ce00ecf7045254dfc7fb09fc4650 Mon Sep 17 00:00:00 2001
>From: Petr Spacek <pspacek at redhat.com>
>Date: Tue, 16 Apr 2013 16:10:09 +0200
>Subject: [PATCH] Clean up PTR record synchronization code and make it more
> robust.
>
>PTR record synchronization was split to smaller functions.
>Input validation, error handling and logging was improved
>significantly.
>
>Signed-off-by: Petr Spacek <pspacek at redhat.com>
>---
> src/ldap_helper.c | 507 ++++++++++++++++++++++++++++++++++++------------------
> 1 file changed, 342 insertions(+), 165 deletions(-)
>
>diff --git a/src/ldap_helper.c b/src/ldap_helper.c
>index 8448412b7a1a9150bd24d9ca46575c0402be0c9f..6c5cf2e79d762251954e3bb099dbef98a0b2d805 100644
>--- a/src/ldap_helper.c
>+++ b/src/ldap_helper.c
>@@ -2830,35 +2830,360 @@ cleanup:
> #undef SET_LDAP_MOD
> }
>
>+
>+#define SYNCPTR_PREF "PTR record synchronization "
>+#define SYNCPTR_FMTPRE SYNCPTR_PREF "(%s) for A/AAAA '%s' "
>+#define SYNCPTR_FMTPOST ldap_modop_str(mod_op), a_name_str
>+
>+static const char *
>+ldap_modop_str(unsigned int mod_op) {
>+ static const char add[] = "addition";
>+ static const char del[] = "deletion";
^^^^^
Declaration(definition) of string should be consistent everywhere in the source code.
Please change "char _name[]" to "char * _name"
Sorry for nitpicking, I know that semantically is it the same,
but in the other places in source code, strings are
defined like "(const)? char *".
If you don't believe me, you can run next command :-)
grep -Rn -E 'char.*=.*"[^"]*"' <path_to_bind-dyndb-ldap>
[snip]
>+static isc_result_t
>+ldap_find_ptr(ldap_instance_t *ldap_inst, const char *ip_str,
>+ dns_name_t *ptr_name, ld_string_t *ptr_dn,
>+ dns_name_t *zone_name) {
>+ isc_result_t result;
>+ isc_mem_t *mctx = ldap_inst->mctx;
>+
>+ in_addr_t ip;
>+
>+ /* Get string with IP address from change request
>+ * and convert it to in_addr structure. */
>+ if ((ip = inet_addr(ip_str)) t) == 0) {
^^^^
If the input is invalid, INADDR_NONE (usually -1) is returned.
For details: man inet_addr
>+ log_bug(SYNCPTR_PREF " could not convert IP address "
>+ "from string '%s'", ip_str);
>+ CLEANUP_WITH(ISC_R_UNEXPECTED);
>+ }
LS
More information about the Freeipa-devel
mailing list