Loading...
--- dyld/dyld-1340/mach_o/DwarfDebug.cpp
+++ dyld/dyld-1235.2/mach_o/DwarfDebug.cpp
@@ -251,10 +251,8 @@
sz = 8;
break;
case DW_FORM_string:
- if ( offset == end )
- return false;
- // rdar://124698722 (off-by-one error when decoding DW_FORM_string)
- offset += strnlen((char*)offset, (end-offset-1)) + 1;
+ while (offset != end && *offset)
+ ++offset;
return true;
case DW_FORM_data1:
case DW_FORM_flag:
@@ -263,7 +261,6 @@
break;
case DW_FORM_block:
sz = read_uleb128(offset, end, malformed);
- return true; // offset already updated by read_uleb128()
break;
case DW_FORM_block1:
if (offset == end)
@@ -273,15 +270,13 @@
case DW_FORM_sdata:
case DW_FORM_udata:
case DW_FORM_ref_udata:
- sz = read_uleb128(offset, end, malformed);
- return true; // offset already updated by read_uleb128()
- break;
+ read_uleb128(offset, end, malformed);
+ return true;
case DW_FORM_addrx:
case DW_FORM_strx:
case DW_FORM_rnglistx:
sz = read_uleb128(offset, end, malformed);
- return true; // offset already updated by read_uleb128()
- break;
+ return true;
case DW_FORM_addrx1:
case DW_FORM_strx1:
sz = 1;
@@ -307,7 +302,6 @@
break;
case DW_FORM_exprloc:
sz = read_uleb128(offset, end, malformed);
- return true; // offset already updated by read_uleb128()
break;
case DW_FORM_flag_present:
sz = 0;