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
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs