Koha-clms/C4
Bernard Scaife 10b6823ff7
Bug 40675: Fix SIP message corruption from embedded line endings
Patron messages containing carriage returns, line feeds, or CRLF
combinations can break SIP protocol communication since CR is used
as the SIP message terminator. This causes message parsing failures
and protocol errors in self-check systems.

The previous regex only handled single carriage returns (\r),
missing Windows CRLF (\r\n) and Unix LF (\n) sequences.

This patch normalizes all line ending variations to spaces to
prevent SIP message corruption while preserving message content.

Test plan:
1. Go to a patron record and click "Add message"
2. Select "Add message for OPAC..." from dropdown
3. In a text editor (e.g., Word), create a message with line breaks:
   "This is line one[Enter]This is line two[Enter]This is line three"
4. Copy and paste this multi-line text into the message box and save
5. Run the SIP emulator: misc/sip_cli_emulator.pl
6. Execute a patron information request for this patron
7. Before patch: Observe message breaks at line endings, corrupting
   the SIP response
8. Apply patch and restart SIP server
9. Repeat steps 5-6
10. After patch: Verify the message appears as single line with
    spaces replacing line breaks: "This is line one This is line two
    This is line three"
11. Test with different line ending types (Windows, Mac, Unix) to
    ensure all variations are handled correctly

Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
[EDIT] Adjusted the comment in Sip.pm
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit affa3e62fd)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
(cherry picked from commit 5709be47e4)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
2025-10-16 11:51:51 +02:00
..
AuthoritiesMarc
…
Barcodes Bug 19113: Barcode value builder not working with numeric branchcode 2025-07-31 10:27:42 +02:00
ClassSortRoutine
…
ClassSplitRoutine Bug 40388: Remove warning from t/Labels.t 2025-08-01 14:29:57 +02:00
Creators Bug 37720: Prevent XSS in label creator 2024-10-18 12:07:51 +02:00
External
…
Form Bug 34776: Add unit tests for sub restore_form_values 2025-07-28 10:22:07 +02:00
Heading Bug 39415: (follow-up) Add 651g to bib heading fields as well 2025-05-26 20:17:03 +02:00
ILSDI Bug 31224: Update instances of metadata->record 2024-11-07 16:29:23 +01:00
Installer
…
Labels Bug 34157: Exporting labels as a barcode range can cause 500 error 2025-07-31 16:15:12 +02:00
Linker Bug 35125: Respect LinkerConsiderThesaurus in update_cache 2024-07-01 18:55:42 +02:00
Members Bug 29194: Create logical ordering of patron messaging preferences 2024-10-11 11:13:56 +02:00
OAI
…
Output
…
Patroncards Bug 39295: Prevent infinite loop on line wrapping 2025-06-19 11:06:57 +02:00
Reports Bug 37784: Do not show forbidden columns in reports dictionary 2025-03-24 17:59:09 +01:00
SIP Bug 40675: Fix SIP message corruption from embedded line endings 2025-10-16 11:51:51 +02:00
Search
…
Serials
…
Utils/DataTables Bug 39427: Searching lists table by owner can only enter firstname or surname 2025-09-19 14:56:16 +02:00
Accounts.pm
…
Acquisition.pm Bug 38343: Do not show closed invoices by default when receiving 2024-11-22 10:22:39 +01:00
Auth.pm Bug 39734: Remove obsolete call of system preference IntranetmainUserblock 2025-09-29 11:02:01 +02:00
Auth_cas_servers.yaml.sample
…
Auth_with_cas.pm Bug 34893: (QA follow-up) Tidy code for qa script 2024-02-02 17:31:47 +01:00
Auth_with_ldap.pm Bug 36822: LDAP - Add discard_changes 2024-11-07 16:29:15 +01:00
Auth_with_shibboleth.pm Bug 36822: Shibboleth - Add discard_changes 2024-11-07 16:29:14 +01:00
AuthoritiesMarc.pm Bug 40119: (QA follow-up) Small additional comment 2025-07-25 14:28:18 +02:00
Barcodes.pm Bug 37070: (QA follow-up) Fix qa script issues 2024-10-18 14:26:05 +02:00
Biblio.pm Bug 38619: UNIMARC prices should also be extracted from 071d 2025-10-10 13:44:18 +02:00
Breeding.pm Bug 37546: Output error message from ZOOM in Z3950 errors 2025-10-06 16:24:34 +02:00
Budgets.pm Bug 31631: Optionally use tax-exclusive values for calculating fund values 2023-10-18 15:41:35 -03:00
Calendar.pm Bug 32048: Added clear cache routine to delete_holiday_range_repeatable 2023-09-18 15:31:50 -03:00
Charset.pm
…
Circulation.pm Bug 39735: Fix typo in system preference call 'OPACFineNoRenewalsIncludeCredit' 2025-09-29 11:19:13 +02:00
ClassSortRoutine.pm
…
ClassSource.pm Bug 23387: Add caching to C4::ClassSource 2024-08-26 17:39:31 +02:00
ClassSplitRoutine.pm
…
Context.pm Bug 36081: Use multivalue_preference 2025-02-24 20:43:20 +01:00
Contract.pm
…
CourseReserves.pm
…
Creators.pm
…
HTML5Media.pm
…
Heading.pm Bug 38483: C4::Heading::preferred_authorities is not used 2025-03-24 18:12:14 +01:00
HoldsQueue.pm Bug 40620: Holds Queue will assign to the lowest item number if multiple branches have the same transport cost 2025-09-26 15:23:50 +02:00
ImportBatch.pm Bug 38279: Remove unused C4::ImportBatch::EmbedItemsInImportBiblio 2024-11-08 16:42:50 +01:00
ImportExportFramework.pm Bug 33339: Prevent Formula Injection (CSV Injection) in CSV files 2024-11-14 10:46:31 +01:00
InstallAuth.pm Bug 36367: Remove _new_userenv 2024-06-14 11:17:17 +01:00
Installer.pm Bug 38299: (follow-up) (discussion) Move failure into same level 2024-11-18 17:44:40 +01:00
ItemCirculationAlertPreference.pm
…
Items.pm Bug 14907: Sort item search by cn_sort when sorting by callnumber 2025-04-22 23:01:31 +02:00
Koha.pm Bug 39603: Make sure authorised value category is ITEMTYPECAT 2025-09-29 11:09:45 +02:00
Labels.pm
…
Languages.pm Bug 38630: (QA follow-up) Fixing few calls of getTranslatedLanguages 2025-09-29 09:34:52 +02:00
Letters.pm Bug 36008: Use notice_email_address instead of email for SendAlerts issue type 2025-08-06 09:56:59 +00:00
Linker.pm
…
Log.pm Bug 37944: Log object delete as JSON diff, implement for items 2024-10-30 11:57:25 +01:00
MarcModificationTemplates.pm
…
Matcher.pm Bug 39070: Don't request facets when searching for recrod matches 2025-09-29 11:31:25 +02:00
Members.pm Bug 37845: Remove C4::Members::DeleteExpiredOpacRegistrations 2024-10-21 15:10:31 +02:00
Message.pm Bug 18398: (follow-up) Update POD & Unit tests 2023-03-31 13:13:35 +02:00
Output.pm Bug 34478: Remove check_csrf from pl files 2024-03-01 10:56:01 +01:00
Overdues.pm Bug 39405: (follow-up) Add the parameter borrowernumber to the overwrite_calc_fine plugin hook 2025-04-25 11:27:58 +02:00
Patroncards.pm
…
Record.pm Bug 14670: (QA follow-up) Tidy new code 2024-11-14 10:46:38 +01:00
Reports.pm
…
Reserves.pm Bug 40034: Only check notforloan on itemtype if it exists 2025-07-09 14:58:38 +00:00
Ris.pm Bug 33431: Fix remaining cases 2024-03-18 11:03:39 +01:00
RotatingCollections.pm Bug 28294: Remove updateWrongTransfer 2024-11-07 18:49:36 +01:00
SMS.pm Bug 36051: (QA follow-up): Use yaml_preference 2024-04-12 11:26:12 +02:00
Scheduler.pm
…
Scrubber.pm Bug 40079: (follow-up) Improve test coverage and fix undef handling 2025-07-25 16:49:49 +02:00
Search.pm Bug 37004: Add branchcode as HTML class to each grouped result in search results 2024-09-02 12:13:42 +02:00
Serials.pm Bug 38829: Sanitize GetLateOrMissingIssues inputs 2025-02-18 19:17:17 +01:00
Service.pm
…
ShelfBrowser.pm
…
SocialData.pm Bug 33833: Add two FIXMEs to SocialData::get_report 2023-09-05 14:35:35 -03:00
Stats.pm Bug 33608: (QA follow-up) Remove ->insert method 2023-10-25 11:07:59 -03:00
Suggestions.pm Bug 38235: Suggestion confirmation letter sent when it should not 2024-11-12 17:50:18 +01:00
TTParser.pm Bug 36171: Fix template toolkit tags split by HTML parser 2024-10-24 13:38:12 +02:00
Tags.pm Bug 36785: Typo unreconized and bilbio in tags code 2024-05-17 10:36:35 +02:00
Templates.pm Bug 38467: Make uri and url filters rfc3986 when using C4::Template 2025-02-18 19:17:18 +01:00
TmplToken.pm
…
TmplTokenType.pm
…
UsageStats.pm Bug 38104: Always update when hea cronjob is run 2025-04-22 23:02:27 +02:00
XISBN.pm
…
XSLT.pm Bug 38100: (QA follow-up) Tidy changes in C4/XSLT.pm 2024-11-08 11:23:50 +01:00