Commit graph

61 commits

Author SHA1 Message Date
Bruce Beare
a37f372973 readdir: fix interface to kernel getdents64 function
Issue:
  The kernel will pad the entry->d_reclen in a getdents64 call to a
  long-word boundary.  For very long records, this could exceed the
  size of a struct dirent. The mismatch in the size was causing error
  paranoid checking code in bionic to fail... thus causing an early
  "end" when reading the dirent structures from the kernel buffer.

Test:
 ls
 mkdir abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstu
 ls

Change-Id: I75d1f8e45e1655fdd7bac4a08a481d086f28073a
Author: Bruce Beare <bruce.j.beare@intel.com>
2011-12-19 09:38:48 -08:00
Bruce Beare
7d03c9cbce pathconf: dead loop in bionic function __2_symlinks
Fix dead loops in file ./bionic/libc/unistd/pathconf.c

Change-Id: I7a1e6bcd9879c96bacfd376b88a1f899793295c8
Author: Jin Wei <wei.a.jin@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
2011-12-07 09:47:20 -08:00
JP Abgrall
3884bfe966 libc: popen: work around data corruption
vfork() would not save the registers that the parent would expect
to have restored after execl() completed.
Specially that execl() would call execve() underneath, further messing
up the stack of the parent.
To avoid that, we fork() for now. Later we will revisit and cleanup
vfork()+execve() to actually have vfork() store all the register
that the parent expects to see, and not those left by execve().

In the original code, looking at the registers just before the call to
popen(), and after the call showed that r7 would get clobbered.
This would leave the caller with an invalid pointer, leading to all
kinds of data corruptions.
execve() is simpler that execl() in this case.


Bug: 5336252
Change-Id: I3bf718c0bb4c0439f6f2753f153cdea14175be9c
2011-09-17 15:22:21 -07:00
David Turner
6b577759b2 am f2ebd304: am 57aadbb0: Merge "enable support for large files (> 2G)"
* commit 'f2ebd304c3c0822121e6a4d0f542a048a7fc3b20':
  enable support for large files (> 2G)
2011-07-13 14:53:34 -07:00
David Turner
f2ebd304c3 am 57aadbb0: Merge "enable support for large files (> 2G)"
* commit '57aadbb096a118dd33f9f16c67bd18dbb6b92c4a':
  enable support for large files (> 2G)
2011-07-11 10:46:00 -07:00
Dragos Tatulea
0e1723e684 enable support for large files (> 2G)
bionic has an i386 ifdef guard for the O_LARGEFILE flag. The reason for this
is not traceable in the git history, but it's most likely due to some old
toolchain or emulator problem.

Bug Id: 10035

Change-Id: I742ee6e50220276c2cb268d66f89b5655ef689fc
Signed-off-by: Dragos Tatulea <dragos.tatulea@intel.com>
2011-07-05 15:36:43 +03:00
David Turner
afc92c7023 am c643a4d4: am 2be3f09f: Merge "time: Improve C99 compliance"
* commit 'c643a4d4c71c2caaf016ab402fba99c1c9377567':
  time: Improve C99 compliance
2011-06-24 17:16:56 -07:00
David Turner
c643a4d4c7 am 2be3f09f: Merge "time: Improve C99 compliance"
* commit '2be3f09f2d9b6d35b262f7a6148f51c164bb8cbb':
  time: Improve C99 compliance
2011-06-23 10:01:11 -07:00
Jim Huang
21edf366ea time: Improve C99 compliance
Quote from Linux Programmer's Manual:
  "If t is non-NULL, the return value is also stored in the memory
   pointed to by t."

Change-Id: I8cb66b67e5f34c536ce2f0db76a6dc337c42ea3f
Signed-off-by: Jim Huang <jserv@0xlab.org>
2011-06-22 16:44:45 +08:00
Carl Shapiro
2cc2b2be69 Add some missing includes.
Change-Id: Ieec623c06bc32ec78334f628af25b00c2bccd2e7
2011-03-21 20:01:03 -07:00
Brad Fitzpatrick
38e53adadd am c59b2482: am 5a6f593b: Merge "Use sigemptyset to initialise sigset_t values. sigset_t may not be implemented as an integral type."
* commit 'c59b248241b18492d20e112230a907c14400275b':
  Use sigemptyset to initialise sigset_t values. sigset_t may not be implemented as an integral type.
2011-03-16 11:43:29 -07:00
Chris Dearman
c1519a52ef Use sigemptyset to initialise sigset_t values.
sigset_t may not be implemented as an integral type.

Change-Id: I3f5ec86d6383685979d8d23ef508b6c609569b38
Signed-off-by: Raghu Gandham <raghu@mips.com>
2011-03-14 12:15:22 -07:00
Colin Cross
5c6a8a6f41 am 84f4753d: am 56faf66f: raise: Send signal to current thread
* commit '84f4753d1b5f89ace0cc89021916f6f5b44e6540':
  raise: Send signal to current thread
2011-01-21 12:40:07 -08:00
Colin Cross
56faf66fd7 raise: Send signal to current thread
Change-Id: Ie4318b8ddd01cc2f58f5e07c1d71376953943153
2011-01-21 11:39:15 -08:00
Glenn Kasten
2cc0d38afb Bug 3330205, 3362385 clock(3) SMP safety and epoch
Change-Id: Ida1e4400489c8c19818c6af5640ab89942c8f712
2011-01-19 16:14:51 -08:00
David 'Digit' Turner
95d751feac libc: Add ftruncate64 and improve 64-bit parameter syscall handling.
This patch improves the handling of 64-bit parameters in syscalls on ARM.
The ARM EABI mandates that 64-bit quantities be passed in even/odd register
pairs, which requires special treatment.

This allows us to simplify our implementations of pread() and pwrite()
and remove the C stubs for pread64() and pwrite64().

Also add ftruncate64() to <unistd.h>

Change-Id: I407e2fd223ba0093dd2d0b04c6152fadfc9ce3ef

Bug 3107933
2010-12-16 17:04:41 +01:00
Bruce Beare
ff3129b0fe sigsetmask.c was not processing the "mask" argument.
Change-Id: I79b898ea5b882e8c0564e25466e827a9bedda6e8
Author: yhe19 <yunan.he@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
2010-12-09 15:17:28 -08:00
Yu Shan Emily Lau
abdffc4e23 Revert "sigsetmask.c was not processing the "mask" argument."
This reverts commit 9a9c1619b8.
2010-12-09 11:57:42 -08:00
Jean-Baptiste Queru
5d7995be24 am b11d7c3e: am bcb0a925: Merge "sigsetmask.c was not processing the "mask" argument."
* commit 'b11d7c3eca0e5bc04c14afe82a530429f173706c':
  sigsetmask.c was not processing the "mask" argument.
2010-12-06 16:44:30 -08:00
Jean-Baptiste Queru
b11d7c3eca am bcb0a925: Merge "sigsetmask.c was not processing the "mask" argument."
* commit 'bcb0a925b0d6d545bbd9a4ebd9ac61bdacbfa2fe':
  sigsetmask.c was not processing the "mask" argument.
2010-12-06 10:55:14 -08:00
Bruce Beare
9a9c1619b8 sigsetmask.c was not processing the "mask" argument.
Change-Id: I79b898ea5b882e8c0564e25466e827a9bedda6e8
Author: yhe19 <yunan.he@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
2010-12-03 16:48:47 -08:00
Kenny Root
72e64e0869 Add support for pread64/pwrite64
64-bit pread() and pwrite() is needed for ZipFileRO to be able to read
ludicrously large ZIP files just in case someone is crazy enough to do
it.

Also fix a license header that was apparently mangled.

Change-Id: I6819ef8b36e46b63b40749c95717b1ecf9307033
2010-11-24 13:14:50 -08:00
Jean-Baptiste Queru
168f267723 am ff7d9453: am f67e5211: Merge "Hide the symbol of helper function __libc_android_abort"
Merge commit 'ff7d94530db60cf4fe4a4c287ee8821ebdf6263a'

* commit 'ff7d94530db60cf4fe4a4c287ee8821ebdf6263a':
  Hide the symbol of helper function __libc_android_abort
2010-10-12 01:45:31 -07:00
Jean-Baptiste Queru
ff7d94530d am f67e5211: Merge "Hide the symbol of helper function __libc_android_abort"
Merge commit 'f67e5211e045af1b12f646448a5a35f96ba5e8f1' into gingerbread-plus-aosp

* commit 'f67e5211e045af1b12f646448a5a35f96ba5e8f1':
  Hide the symbol of helper function __libc_android_abort
2010-10-11 07:27:01 -07:00
repo sync
319de1758c am 686af0b3: resolved conflicts for merge of defd1622 to gingerbread-plus-aosp
Merge commit '686af0b3a5978356be3b1a97187c765d63f11623'

* commit '686af0b3a5978356be3b1a97187c765d63f11623':
  libc: add <sys/eventfd.h> and corresponding implementations.
2010-09-28 12:48:34 -07:00
David 'Digit' Turner
2336503264 am a511f245: am 9973a564: libc: Add missing waitid() implementation.
Merge commit 'a511f245614d8e6c7700df624e13a41a084ad7e4'

* commit 'a511f245614d8e6c7700df624e13a41a084ad7e4':
  libc: Add missing waitid() implementation.
2010-09-28 12:48:32 -07:00
David 'Digit' Turner
defd162212 libc: add <sys/eventfd.h> and corresponding implementations.
Change-Id: Ide040884c456190226e580513099fdb8377e015b
2010-09-28 09:20:37 +02:00
David 'Digit' Turner
9973a56422 libc: Add missing waitid() implementation.
Change-Id: I312ee608dbf9249e4886a10d45d13e3cda8a9042
2010-09-28 09:18:26 +02:00
Jim Huang
9d16a79b18 Hide the symbol of helper function __libc_android_abort
Ideally __libc_android_abort would be static, but it could not be
because gcc would not allow calling a static function from an asm
statement.  Instead, using GCC visibility is work around.

Change-Id: Ifff6b9957ca3f0fc03c75c3e42582a48d43cefa2
2010-09-27 22:20:59 +08:00
Jeff Hamilton
2304a0bf86 Fix pwrite to take a const void* instead of void* for the buffer.
Change-Id: I10b315946b8f8f7e34825410dfef37e0220edbee
2010-08-11 11:28:26 -05:00
Dima Zavin
63673645c4 libc: make lseek64 proto be glibc compatible (loff_t -> off64_t)
Change-Id: Ib79b99be9ca8d4b1f95ceeba416b6abc04187c3c
Signed-off-by: Dima Zavin <dima@android.com>
2010-08-06 11:47:29 -07:00
David 'Digit' Turner
cb7e8c5ef3 libc: update alarm() implementation to return 0 on error.
This matches the GLibc behaviour, and allows alarm(0xFFFFFFFF) to return 0.

Change-Id: I419aa71b27d6bb2015d15ba6b6112bf62eadcbb8
2010-07-08 17:20:29 -07:00
David 'Digit' Turner
ab8b54101e libc: fix fstatfs() implementation.
The syscall expects the size of the buffer as the second argument.

Change-Id: I99ede2fec7fcd385ca03ff022c2cffa4297bea8d
2010-07-08 16:52:27 -07:00
David 'Digit' Turner
519763265e libc: Fix sem_post() implementation to wake up all waiting threads.
This also allows us to optimize the case where we increment an
uncontended semaphore (no need to call futex_wake() then).

Change-Id: Iad48efe8551dc66dc89d3e3f18c001e5a6c1939f
2010-07-02 15:09:57 -07:00
David 'Digit' Turner
50ace4fec5 Remove compiler warnings when building Bionic.
Also add missing declarations to misc. functions.
Fix clearerr() implementation (previous was broken).
Handle feature test macros like _POSIX_C_SOURCE properly.

Change-Id: Icdc973a6b9d550a166fc2545f727ea837fe800c4
2010-06-22 17:51:41 -07:00
The Android Open Source Project
e8f79c1f5d merge from open-source master
Change-Id: I408b5705b18d9e93e66bfbfeec0e3baefd618dec
2010-06-18 11:33:00 -07:00
Mikael Ohlson
b44fcd6e8f Fix for incorrect reply from sysconf(_SC_NPROCESSORS_ONLN)
When calling sysconf with _SC_NPROCESSORS_ONLN, the value one (1) was
returned on systems with two or more cores, since '/proc/stat' was
incorrectly parsed.

The function line_parser_getc (LineParser* p) read 128 characters of
input for each invocation.

The proper and probably aimed for behavior is to read 128 characters
at the first call, then for each subsequent call only return the next
buffered character until a new read is needed and only then read
another 128 characters.

Due to a flipped comparison between the two variables in_len and
in_pos that track the number of bytes of data read into the input
buffer and how much of it has been parsed, a new group of 128
characters were read at almost every call to line_parser_getc,
overwriting the still unhandled bytes from the previous call to
read. This caused the lines to be read to be sampled more than parsed.

Change-Id: I93eec3c8c9b9f19ef798748579d0977111b5c0bb

Signed-off-by: Christian Bejram <christian.bejram@stericsson.com>
2010-06-16 22:02:20 +00:00
David 'Digit' Turner
038fbae518 sysconf(): Fix line parser for /proc files.
Change-Id: I2678010ee95933de19c8a8e3b2fe65ceb9b86400
2010-06-09 18:15:57 -07:00
The Android Open Source Project
377d4c979d merge from open-source master
Change-Id: I70266ee8c520b216773f267e46c8273d2334c31d
2010-03-22 15:55:09 -07:00
David 'Digit' Turner
d378c68d74 Fix spurious DNS lookups in the C library.
The problem was that the 'defdname' field of res_state structure
was not properly initialized in __res_vinit(). This field is used
to store the default domain name, which is normally build from
calling gethostname() (see line 549 of res_init.c).

Unfortunately, in the typical Android case, gethostname() returns
an error (the hostname is configured) and a random stack string is
used later to build the DNS search list (see lines 556+ in res_init.c)

For the sake of illustration, let's say the search list is set to
a random value like 'xWLK'.

The end result is that when trying to result an unknown domain name
(e.g. 'www.ptn'), the query fails then the resolver tries to make a
new query with the DNS search list path(s) appended (e.g. 'www.ptn.xWLK').

The patch simply initializes 'defdname' to an empty string to avoid
this when the net.dns.search system property is not set.

Also contains whitespace/formatting fixes
2010-03-08 15:22:13 -08:00
Mike Chan
9f6915631b bonic: libc: cpuacct support for setuid functions
Any of the setuid functions now updates /acct/uid/ with its own tid
before changing users. This is so we can properly account for cpu time
per uid.

Change-Id: I34186cf4d5228cac8439e582a9e26c01ef3011e4
Signed-off-by: Mike Chan <mike@android.com>
2010-03-02 18:18:04 -08:00
Matt Fischer
e31c1d0b48 Fix pread()/pwrite() stubs
On ARM EABI, 64-bit function parameters must be aligned
to an even/odd register pair.  The weird way these stubs
were written (using separate lo/hi parameters) prevented
this alignment from being enforced by the compiler.
2010-02-12 16:13:46 -06:00
Colin Cross
8c59d96e24 Add killpg function
Change-Id:	I9bc347d264fe38faf2d0f9935d2ebb43a353196e
2010-01-15 16:27:04 -08:00
Colin Cross
6458c49c96 Fix ptsname_r(3) return type to match glibc
The gHardy man pages specify the return type of ptsname_r to be char*, but the
return value to be 0 on success, negative on error and the gHardy stdlib.h
defines extern int ptsname_r(...).

Busybox telnetd fails to run successfully without this change.
2010-01-12 12:58:12 -08:00
Elliott Hughes
99d7907611 Fix usleep(3) return type to be POSIX-compliant.
POSIX usleep(3) returns 0 on successful completion, -1 otherwise:
  http://www.opengroup.org/onlinepubs/007908799/xsh/usleep.html

This was found by an external user porting native code:
  http://groups.google.com/group/android-porting/browse_thread/thread/674848f001db0292
2009-12-14 17:07:19 -08:00
Jean-Baptiste Queru
95604529ec merge from eclair 2009-11-15 12:05:31 -08:00
Jean-Baptiste Queru
194d3fa048 eclair snapshot 2009-11-12 18:45:14 -08:00
Jean-Baptiste Queru
83362689f5 merge from open-source master 2009-11-09 08:04:48 -08:00
Thorsten Glaser
92b10af793 Add the BSD sys_signame array.
Signed-off-by: Thorsten Glaser <tg@mirbsd.org>
2009-11-05 15:50:05 -08:00
Andy McFadden
b63e4e88b0 am 5f32207a: Wrap ARM abort() to improve stack trace.
Merge commit '5f32207a3db0bea3ca1c7f4b2b563c11b895f276' into eclair-mr2-plus-aosp

* commit '5f32207a3db0bea3ca1c7f4b2b563c11b895f276':
  Wrap ARM abort() to improve stack trace.
2009-10-16 07:28:34 -07:00