소스 검색

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 );
 	}
     }