Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix READ heap-buffer-overflow errors reported by ASan. #65

Merged
merged 1 commit into from
Mar 12, 2019

Conversation

sdefresne
Copy link
Contributor

When initializing fixed size structure fields from strings, the number
of bytes copied needs to be the minimum of the structure field and the
string byte count.

Fixes the following class of errors found when running a version of
class-dump build with ASan (Address Sanitizer):

==67822==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6030000095a0 at pc 0x0001068b4d2d bp 0x7fff595270b0 sp 0x7fff59526860
READ of size 16 at 0x6030000095a0 thread T0
#0 0x1068b4d2c in __asan_memcpy (libclang_rt.asan_osx_dynamic.dylib+0x40d2c)
#1 0x106716ed4 in -CDLCSegment initWithDataCursor:
#2 0x10672d82b in +CDLoadCommand loadCommandWithDataCursor:
...

When initializing fixed size structure fields from strings, the number
of bytes copied needs to be the minimum of the structure field and the
string byte count.

Fixes the following class of errors found when running a version of
class-dump build with ASan (Address Sanitizer):

==67822==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6030000095a0 at pc 0x0001068b4d2d bp 0x7fff595270b0 sp 0x7fff59526860
READ of size 16 at 0x6030000095a0 thread T0
    #0 0x1068b4d2c in __asan_memcpy (libclang_rt.asan_osx_dynamic.dylib+0x40d2c)
    nygard#1 0x106716ed4 in -[CDLCSegment initWithDataCursor:] (class-dump+0x100040ed4)
    nygard#2 0x10672d82b in +[CDLoadCommand loadCommandWithDataCursor:] (class-dump+0x10005782b)
    ...
@sdefresne
Copy link
Contributor Author

Hi, this was found while trying to build Chromium using ASan. The build ended up compiling class-dump with ASan and then running it. With this patch applied, all code path exercised while compiling Chromium for iOS are covered, there may exists other occurrences of the same error in the code.

@sdefresne
Copy link
Contributor Author

Ping?

@nygard nygard merged commit 48c261b into nygard:master Mar 12, 2019
@nygard
Copy link
Owner

nygard commented Mar 12, 2019

Thank you for the pull request, I have finally merged it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants