From 2346f0e97a4ff5d8062e1c6f09f94512dee84847 Mon Sep 17 00:00:00 2001 From: Ulrich Kleiber Date: Fri, 29 Jul 2011 16:35:40 +0200 Subject: [PATCH] Bug 6765: sip2 unicode checksum Changes checksum calculation method, as per Dan Scott's fix in openncip. see http://sourceforge.net/tracker/?func=detail&aid=2925760&group_id=161781&atid=821216 http://bugs.koha-community.org/show_bug.cgi?id=6765 Signed-off-by: Ian Walls Signed-off-by: Chris Cormack (cherry picked from commit 8a7c9167660493bc1a01a93dddba37a1a3683bc0) Signed-off-by: Chris Nighswonger --- C4/SIP/Sip/Checksum.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/C4/SIP/Sip/Checksum.pm b/C4/SIP/Sip/Checksum.pm index e88567a929..ed102c7b2e 100644 --- a/C4/SIP/Sip/Checksum.pm +++ b/C4/SIP/Sip/Checksum.pm @@ -10,7 +10,7 @@ our $debug = 0; sub checksum { my $pkt = shift; - return (-unpack('%16U*', $pkt) & 0xFFFF); + return (-unpack('%16C*', $pkt) & 0xFFFF); } sub verify_cksum { @@ -29,7 +29,7 @@ sub verify_cksum { # Convert the checksum back to hex and calculate the sum of the # pack without the checksum. $cksum = hex($1); - $shortsum = unpack("%16U*", substr($pkt, 0, -4)); + $shortsum = unpack("%16C*", substr($pkt, 0, -4)); # The checksum is valid if the hex sum, plus the checksum of the # base packet short when truncated to 16 bits. -- 2.39.5