https://bugs.openldap.org/show_bug.cgi?id=9741

          Issue ID: 9741
           Summary: Meaningless out-of-bound read in ldif-filter.c
           Product: OpenLDAP
           Version: unspecified
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Keywords: needs_review
          Severity: normal
          Priority: ---
         Component: libraries
          Assignee: [email protected]
          Reporter: [email protected]
  Target Milestone: ---

I just stumbled over the following compiler warning in ldif-filter.c (see [1]):

14:10:41  ldif-filter.c:209:16: warning: adding 'int' to a string does not
append to the string [-Wstring-plus-int]
14:10:41                  sep = "\r\n" + 2 - line_len;    /* sep = copy(line)
*/
14:10:41                        ~~~~~~~^~~
14:10:41  ldif-filter.c:209:16: note: use array indexing to silence this
warning
14:10:41                  sep = "\r\n" + 2 - line_len;    /* sep = copy(line)
*/
14:10:41                               ^
14:10:41                        &      [  ]

While the expression is valid pointer arithmetic, it does not make sense to me,
because it calculates some (possibly negative) offset to the literal string
"\r\n" in memory, not the address of the beginning of some line, as the comment
`sep = copy(line)` suggests. (Originally added in commit [2]).


[1]
https://git.openldap.org/openldap/openldap/-/blob/master/tests/progs/ldif-filter.c#L209
[2] https://git.openldap.org/openldap/openldap/-/commit/725743abdb

-- 
You are receiving this mail because:
You are on the CC list for the issue.

Reply via email to