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.

Change History (0)

Note: See TracTickets for help on using tickets.