Public bug reported:

Binary package hint: perl

Perl's syscall() function can be used to make system calls by passing
the syscall number and a list of arguments.  The syscall numbers are
defined symbolically in syscall.ph.  On 32-bit x86 for Dapper, Edgy,
Sarge, and Etch, these values are correct.  On IA-32 Feisty, the syscall
numbers are the values for the AMD64 architecture instead.  As a result,
scripts which use the syscall() function on IA-32 Feisty will
inadvertently execute the wrong system calls.

Demo script:

#!/usr/bin/perl
require 'syscall.ph';
print "open:  " . __NR_open() . "\n";
print "close: " . __NR_close() . "\n";
print "sync:  " . __NR_sync() . "\n";

This will print 5, 6, and 36 on most IA-32 systems, but 2, 3, 162 on
Feisty.

Test case:

#!/usr/bin/perl
require 'syscall.ph';
syscall(&SYS_sync);

stracing this script on Feisty will show a call to nanosleep() with
garbage arguments; nanosleep() is syscall 162 on IA-32.

** Affects: perl (Ubuntu)
     Importance: Undecided
         Status: Unconfirmed

-- 
Feisty: perl syscall.ph has wrong syscall numbers on IA32
https://bugs.launchpad.net/bugs/112371
You received this bug notification because you are a member of Ubuntu
Bugs, which is the bug contact for Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to