瀏覽代碼

Ticket #47839 - 389-ds production segfault: __memcpy_sse2_unaligned...

Bug description: modrdn2reple (retrocl_po.c) sets the given mods
to the changelog entry with "changes" attribute type if it includes
modifiersname, modifytimestamp, creatorsname, createtimestamp. When
the modrdn is internally initiated and passed mods do not include
the attributes (modifiersname, etc.), make_changes_string returns
empty lenstr.  There were 2 issues:
1) there was nothing to add if lenstr was empty, but it was added.
2) there was a bug to set the length +1 even though the length was 0.

Fix description:
1) If there is nothing to add to the change attribute, skip calling
   slapi_entry_add_values.
2) Remove adding "+1" for '\0' from the value length: val.bv_len.

https://fedorahosted.org/389/ticket/47839

Reviewed by [email protected] (Thank you, Rich!!)
Noriko Hosoi 11 年之前
父節點
當前提交
46a32692a8
共有 1 個文件被更改,包括 5 次插入3 次删除
  1. 5 3
      ldap/servers/plugins/retrocl/retrocl_po.c

+ 5 - 3
ldap/servers/plugins/retrocl/retrocl_po.c

@@ -544,9 +544,11 @@ modrdn2reple(
     if (NULL != ldm) {
 	l = make_changes_string( ldm, lastmodattrs );
 	if ( NULL != l ) {
-	    val.bv_val = l->ls_buf;
-	    val.bv_len = l->ls_len + 1; /* string + terminating \0 */
-	    slapi_entry_add_values( e, attr_changes, vals );
+	    if (l->ls_len) {
+	        val.bv_val = l->ls_buf;
+	        val.bv_len = l->ls_len;
+	        slapi_entry_add_values( e, attr_changes, vals );
+	    }
 	    lenstr_free( &l );
 	}
     }