Commit graph

20 commits

Author SHA1 Message Date
Nick Kralevich
9b549c39c9 FORTIFY_SOURCE: add sprintf / vsprintf support
sprintf FORTIFY_SOURCE protections are not available
on clang.

Also add various __attribute__s to stdio functions.

Change-Id: I936d1f9e55fe53a68885c4524b7b59e68fed218d
2012-06-13 09:14:30 -07:00
Nick Kralevich
cffdf6693f FORTIFY_SOURCE: add snprintf, vsnprintf
Add _FORTIFY_SOURCE support for snprintf, vsnprintf

At this time, we opt out of these protections for clang, as clang
does not implement __builtin_va_arg_pack().

http://clang.llvm.org/docs/UsersManual.html#c_unimpl_gcc

Change-Id: I73ebe5ec8dad1dca8898a76d6afb693a25f75375
2012-06-11 16:46:16 -07:00
David 'Digit' Turner
9831ad3ce6 libc: speed-up flockfile()/funlockfile()
For Honeycomb, we added proper file thread-safety for
all FILE* operations. However, we did implement that by
using an out-of-band hash table to map FILE* pointers
to phtread_mutex_t mutexes, because we couldn't change
the size of 'struct _sFILE' without breaking the ABI.

It turns out that our BSD-derived code already has
some support code to extend FILE* objects, so use it
instead. See libc/stdio/fileext.h

This patch gets rid of the hash table, and put the
mutex directly into the sFILE extension.

Change-Id: If1c3fe0a0a89da49c568e9a7560b7827737ff4d0
2011-11-15 13:16:42 +01:00
David Turner
bc9d1fe7c4 am 4685acbd: am 9efda5b7: Merge "typo in libc/stdio/wcio.h"
* commit '4685acbdd45c44e2e21c74242953bee5198209f9':
  typo in libc/stdio/wcio.h
2011-08-03 08:16:37 -07:00
Nathan Forbes
7743f68204 typo in libc/stdio/wcio.h
whcar_io_data -> wchar_io_data
Signed-off-by: Nathan Forbes <me@nathanforbes.com>

Change-Id: I45c231efffac265eed51b7632d5a1b21c18bfa55
2011-07-02 20:29:25 -04:00
David Turner
3f7a3228cd am c5c84c86: Merge "vfscanf: Add support for L type modifier for long long"
* commit 'c5c84c8643250c71bde87541f2b28fc21a9c5cc7':
  vfscanf: Add support for L type modifier for long long
2011-05-17 04:47:06 -07:00
Chris Fries
712e4f81e0 vfscanf: Add support for L type modifier for long long
scanf()'s man page suggests support for %Ld, (and ioux).
Implement this so that 3rd party code will work correctly.

Change-Id: Idce9d266071cb688ca71429395a2d9edf6813595
2011-05-05 11:02:33 -05:00
Kenny Root
f582340a6a Fix the handle locking in stdio
Fix the handle locking in stdio to use flockfile/funlockfile
internally when and where required.  Macros in <stdio.h> are updated
to automatically call the underlying functions when the process is
threaded to obtain the necessary locking.  A private mutex is added
to protect __sglue, the internal list of FILE handles, and another
to protect the one-time initialization.  Some routines in libc that
use getc() change to use getc_unlocked() as they're either protected
by their own lock or aren't thread-safe routines anyway.

Based on OpenBSD change by guenther@openbsd.org
http://www.mail-archive.com/source-changes@cvs.openbsd.org/msg01015.html

Bug: 3446659
Change-Id: Ie82116e358c541718d6709ec45ca6796be5a007b
2011-02-14 09:32:56 -08:00
Glenn Kasten
f4e10b721e Merge "Bug 3330205 Put blanks and zeroes in const area" 2011-01-16 08:50:20 -08:00
Glenn Kasten
e9d0518394 Bug 3330205 Remove unnecessary static variable
Change-Id: I7e781d26d6565952712f8fb0274d336462b441fd
2011-01-09 11:47:42 -08:00
Glenn Kasten
0946b1f6e9 Bug 3330205 Put blanks and zeroes in const area
Change-Id: I8f25aebd1ded3617dc60951271767281f73b8684
2011-01-09 11:38:56 -08:00
Jim Huang
b4867734b0 stdio: make internal symbols static/hidden
Although header libc/stdio/local.h declares the macros and private
variables of stdio, there are several internal symbols exposed
unexpectedly.

Change-Id: Ie7a07f85b70322fb9cd05b3c8e1bcc416061eb4b
2010-10-15 01:10:31 +08:00
André Goddard Rosa
a910abcd19 improve readability of stdio: fix indentation and remove trailing spaces
Change-Id: Ic51e58a7c75d20bf770dc0ebd7f97a338fbe0036
Signed-off-by: André Goddard Rosa <andre.goddard@gmail.com>
2010-05-17 09:34:13 -07:00
André Goddard Rosa
051ea9bc07 stdio: simplify __fremovelock()
... by removing extraneous NULL check, as free() already does it.

Signed-off-by: André Goddard Rosa <andre.goddard@gmail.com>
Change-Id: I0445f35c7ad0a049a0e4aee1fbe002ed2f13b94b
2010-05-10 15:42:47 -07:00
André Goddard Rosa
c8a850bcd1 stdio: simplify vasprintf()
... by removing unneeded NULL check, as free() already does it.
By the way, we don't need to set a stack variable back to NULL.

Signed-off-by: André Goddard Rosa <andre.goddard@gmail.com>

Change-Id: Id90eb8f042b5c922c5ff139b11ff8366fb404566
2010-04-29 07:33:40 -07:00
André Goddard Rosa
6aed4288eb stdio: simplify asprintf()
... by removing unneeded NULL check, as free() already does it.
By the way, we don't need to set a stack variable back to NULL.

Signed-off-by: André Goddard Rosa <andre.goddard@gmail.com>

Change-Id: Id1f72e872f73366dddcea4abc75885a3d9a318c6
2010-04-29 07:31:44 -07:00
The Android Open Source Project
1dc9e472e1 auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
The Android Open Source Project
1767f908af auto import from //depot/cupcake/@135843 2009-03-03 18:28:13 -08:00
The Android Open Source Project
4e468ed2eb Code drop from //branches/cupcake/...@124589 2008-12-17 18:03:48 -08:00
The Android Open Source Project
a27d2baa0c Initial Contribution 2008-10-21 07:00:00 -07:00