Opened 2 weeks ago
#414 new defect
Bugs identified in archive_.pl1 subroutine
| Reported by: | Jim Lippard | Owned by: | Eric Swenson |
|---|---|---|---|
| Priority: | minor | Milestone: | MR12.9 |
| Component: | Standard Library | Version: | MR12.9 |
| Keywords: | archive, archive_.pl1 | Cc: |
Description
Numbers 28–32 are part of a single numbering across the archive programs; line numbers are those of the MR12.8 source. The test kit (tests.archive) contains an exec_com for the item marked "Test", and archive_test.pl1, a program that calls the archive_ entries directly.
Bug 28: a component name longer than 32 characters is truncated, line 110
archive_$get_component and archive_$get_component_info truncate the component name argument to 32 characters, so a longer name finds the component named with its first 32 characters. With an archive holding abcdefghijklmnopqrstuvwxyz012345:
archive_test t_longname abcdefghijklmnopqrstuvwxyz0123456789
get_component abcdefghijklmnopqrstuvwxyz0123456789:
found, bc 324
get_component_info abcdefghijklmnopqrstuvwxyz0123456789:
abcdefghijklmnopqrstuvwxyz012345 bc 324 ...
Expected: error_table_$no_component from both, since no component can have a name longer than 32 characters. Test: bug28.ec.
Bug 29: on a format error in list_components, the component list is freed without naming the caller's area, line 266
The list is allocated in the caller's area (output_area) but freed with a plain free. (The cleanup handler frees it in (output_area).) No symptom was observed, probably because a Multics allocation block identifies its own area. Found by inspection.
Bug 30: a header that extends past the end of the archive is read, line 336
When fewer words remain after a component than a header needs, the next header is read partly beyond the archive's bit count. Normally this produces a format error anyway. Found by inspection.
Bug 31: next_component with a pointer that does not follow a header reports a format error in the archive, line 176
A component_ptr that points into the middle of a component is backed up by a header length and rejected as error_table_$archive_fmt_err, blaming the archive for the caller's bad argument. Expected: error_table_$bad_arg. Found by inspection.
Bug 32: missing parameter attribute, line 50
The declaration of P_n_components lacks the parameter attribute. Found by inspection.
