https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=43021

            Bug ID: 43021
           Summary: A single malformed Z39.50/SRU result can break search
                    and staged record preview
   Initiative type: ---
        Sponsorship ---
            status:
           Product: Koha
           Version: Main
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P5 - low
         Component: Z39.50 / SRU / OpenSearch Servers
          Assignee: [email protected]
          Reporter: [email protected]
        QA Contact: [email protected]
                CC: [email protected]
        Depends on: 35104
  Target Milestone: ---

Two related, unguarded MARC decode calls in the Z39.50/SRU search and staged
record ("breeding") preview flow:

1. C4::Breeding::_handle_one_result (C4/Breeding.pm) calls
   MARC::Record->new_from_xml on each SRU search result with no eval. The
   caller loop that iterates search results across all configured servers
   already has per-result error handling for other kinds of failures
   (connection diagnostics collected in @errconn), but this call bypasses
   it entirely - one malformed record from any searched server aborts the
   whole results page for the cataloguer running the search.

2. MARCfindbreeding in cataloguing/addbiblio.pl calls
   MARC::Record->new_from_usmarc on a staged ("breeding") record with no
   eval, when a cataloguer opens that staged record to preview/import it.

Both should catch a decode failure for the one affected record and report
it to the user (e.g. skip that result with a visible message, or show a
clear error instead of a blank/broken page) rather than propagating an
uncaught exception.

Found while auditing other places in the codebase that ingest
externally-sourced MARC data, prompted by bug 35104.

Test plan:
1. Configure a Z39.50/SRU target and search it for records, where at least
   one result server returns a record whose MARC cannot be decoded (or
   simulate by mocking C4::Breeding::_handle_one_result's input).
2. Before a fix: the whole results page fails/errors out.
3. Separately, stage a file containing an undecodable record via Stage
   MARC records for import, then open it via the cataloguing "breeding"
   preview.
4. Before a fix: the preview page errors out.
5. After a fix: both cases show a clear per-record error and let the user
   continue working with the rest of the results/batch.


Referenced Bugs:

https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=35104
[Bug 35104] We should warn when attempting to save MARC records that contain
characters invalid in XML
-- 
You are receiving this mail because:
You are the assignee for the bug.
You are watching all bug changes.
_______________________________________________
Koha-bugs mailing list
[email protected]
https://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-bugs
website : http://www.koha-community.org/
git : http://git.koha-community.org/
bugs : http://bugs.koha-community.org/

Reply via email to