81 lines
2.4 KiB
Diff
81 lines
2.4 KiB
Diff
From 94a52cd03a6fcccf78a4d7e5c4adc65fb777fcfb Mon Sep 17 00:00:00 2001
|
|
From: Viktor Ashirov <vashirov@redhat.com>
|
|
Date: Mon, 10 Nov 2025 13:20:28 +0100
|
|
Subject: [PATCH] Issue 7049 - RetroCL plugin generates invalid LDIF
|
|
|
|
Bug Description:
|
|
When a replicated modification marked with LDAP_MOD_IGNORE is logged,
|
|
`changes` attribute contains invalid LDIF:
|
|
|
|
```
|
|
replace: modifiersName
|
|
modifiersName: cn=MemberOf Plugin,cn=plugins,cn=config
|
|
-
|
|
modifyTimestamp: 20250903092211Z
|
|
-
|
|
```
|
|
Line `replace: modifyTimestamp` is missing.
|
|
|
|
A similar issue is present in audit log:
|
|
```
|
|
time: 20251031064114
|
|
dn: ou=tuser,dc=example,dc=com
|
|
result: 0
|
|
changetype: modify
|
|
add: objectClass
|
|
objectClass: nsMemberOf
|
|
-
|
|
replace: modifiersName
|
|
modifiersName: cn=MemberOf Plugin,cn=plugins,cn=config
|
|
-
|
|
-
|
|
```
|
|
Dash separator is logged, while the operation is not.
|
|
This issue is not present wheh JSON format is used.
|
|
|
|
Fix Description:
|
|
* retrocl_po.c: add a default case to skip the entire modification if it
|
|
has LDAP_MOD_IGNORE flag.
|
|
* auditlog.c: write the dash separator only if operation type is not
|
|
LDAP_MOD_IGNORE
|
|
|
|
Fixes: https://github.com/389ds/389-ds-base/issues/7049
|
|
|
|
Reviewed by: @progier389 (Thanks!)
|
|
---
|
|
ldap/servers/plugins/retrocl/retrocl_po.c | 3 +++
|
|
ldap/servers/slapd/auditlog.c | 2 +-
|
|
2 files changed, 4 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/ldap/servers/plugins/retrocl/retrocl_po.c b/ldap/servers/plugins/retrocl/retrocl_po.c
|
|
index e447ccdfb..277711dd3 100644
|
|
--- a/ldap/servers/plugins/retrocl/retrocl_po.c
|
|
+++ b/ldap/servers/plugins/retrocl/retrocl_po.c
|
|
@@ -99,6 +99,9 @@ make_changes_string(LDAPMod **ldm, const char **includeattrs)
|
|
addlenstr(l, ldm[i]->mod_type);
|
|
addlenstr(l, "\n");
|
|
break;
|
|
+ default:
|
|
+ /* LDAP_MOD_IGNORE or unknown - skip this mod entirely */
|
|
+ continue;
|
|
}
|
|
for (j = 0; ldm[i]->mod_bvalues != NULL &&
|
|
ldm[i]->mod_bvalues[j] != NULL;
|
|
diff --git a/ldap/servers/slapd/auditlog.c b/ldap/servers/slapd/auditlog.c
|
|
index 32fcea38a..e2db40722 100644
|
|
--- a/ldap/servers/slapd/auditlog.c
|
|
+++ b/ldap/servers/slapd/auditlog.c
|
|
@@ -853,8 +853,8 @@ write_audit_file(
|
|
slapi_ch_free((void **)&buf);
|
|
}
|
|
}
|
|
+ addlenstr(l, "-\n");
|
|
}
|
|
- addlenstr(l, "-\n");
|
|
}
|
|
break;
|
|
|
|
--
|
|
2.52.0
|
|
|