Commit Graph

3072 Commits

Author SHA1 Message Date
dholland
32577c4f1c Add IFILE32 and IFILE64 structures for the on-disk ifile entries.
Add and use accessors. There are also a bunch of places that cast and
I hope I've found them all...
2015-08-12 18:25:51 +00:00
dholland
f11e4edeba Make 32-bit and 64-bit versions of CLEANERINFO.
XXX: while this is written to disk, it seems like much of it would
XXX: be better set up as a commpage shared with the cleaner.
2015-08-12 18:25:03 +00:00
dholland
17964a9f43 Fix assorted 64->32 truncations related to BLOCK_INFO.
Also make note of a cleaner limitation: it seems that when it goes to
coalesce discontiguous files, it mallocs an array with one BLOCK_INFO
for every block in the file. Therefore, with 64-bit LFS, on a 32-bit
platform it will be possible to have files large enough to overflow
the cleaner's address space. Currently these will be skipped and cause
warnings via syslog.

At some point someone should rewrite the logic to coalesce files to
use chunks of some reasonable size, as discontinuity between such
chunks is immaterial and mallocing this much space is silly and
fragile. Also, the kernel only accepts up to 65536 blocks at a time
for bmapv and markv, so processing more than this at once probably
isn't useful and may not even work currently. I don't want to change
this around just now as it's not entirely trivial.
2015-08-12 18:23:16 +00:00
shm
c766c3d3c2 Use explicit_memset(3) instead of memset(3) to clear password 2015-08-10 07:45:50 +00:00
shm
92a992f213 Fix directory stream leaks 2015-08-10 07:32:49 +00:00
shm
c09e755be0 Removed unnecessary memset(3) call 2015-08-09 20:34:24 +00:00
shm
0c7f5afe2e Clear utmpx struct before writing it to wtmpx files 2015-08-09 12:17:30 +00:00
mrg
e8204d05c3 on QNX, use nbutil.h. 2015-08-05 06:50:44 +00:00
dholland
9e5184b86b Add a (draft) 64-bit superblock. Make things build again.
Add pieces of support for using both superblock types where
convenient, and specifically to the superblock accessors, but don't
actually enable it anywhere.

First substantive step on PR 50000.
2015-08-02 18:18:09 +00:00
dholland
992b9a23af Use accessor functions for the version field of the lfs superblock.
I thought at first maybe the cases that test the version should be
rolled into the accessors, but on the whole I think the conclusion on
that is no.
2015-08-02 18:14:16 +00:00
dholland
078ffcb8d8 Second batch of 64 -> 32 truncations in lfs, along with more minor
tidyups and corrections in passing.
2015-08-02 18:10:07 +00:00
dholland
e6aad7b613 Use lfs_accessors.h in conjunction with the cleaner's struct clfs.
Remove previous hacks.
2015-07-28 05:14:23 +00:00
dholland
34f0d74c9e Add a new lfs header file: lfs_accessors.h.
This contains all the accessor functions and macros out of lfs.h.
Add an include of lfs_accessors.h after all uses of lfs.h... except
for code that wants to define its own struct lfs-alike that the
accessors are supposed to play along with. For these, set STRUCT_LFS
and include lfs_accessors.h after the necessary structure has been
defined, so that lfs_accessors.h can emit functions in terms of it.
2015-07-28 05:09:34 +00:00
dholland
adca8af59e More lfs superblock accessors.
(This changes the rest of the code over; all the accessors were
already added.)

The difference between this commit and the previous one is arbitrary,
but the previous one passed the regression tests on its own so I'm
keeping it separate to help with any bisections that might be needed
in the future.
2015-07-24 06:59:31 +00:00
dholland
f59b8f4b3a Switch to accessor functions for elements of the LFS on-disk
superblock. This will allow switching between 32/64 bit forms on the
fly; it will also allow handling LFS_EI reasonably tidily. (That
currently doesn't work on the superblock.)

It also gets rid of cpp abuse in the form of fake structure member
macros.

Also, instead of doing sleep/wakeup on &lfs_avail and &lfs_nextseg
inside the on-disk superblock, add extra elements to the in-memory
struct lfs for this. (XXX: these should be changed to condvars, but
not right now)

XXX: this migrates a structure needed by the lfs code in libsa (struct
salfs) into lfs.h, where it doesn't belong, but for the time being
this is necessary in order to allow the accessors (and the various
lfs macros and other goop that relies on them) to compile.
2015-07-24 06:56:41 +00:00
shm
51b65afab5 Fix handling path with multiple slashes at the beginning
Fix redirections escaping for user support

OK mrg@
2015-07-16 12:19:23 +00:00
shm
5f066e934a Remove d_namelen as it's an BSD extension. Fix building bozohttpd on SunOS.
OK mrg@
2015-07-09 12:32:16 +00:00
christos
a6e4c202c0 fix memory leaks on error; found by brainy. 2015-07-04 22:39:23 +00:00
joerg
3490cc6261 Add an explicit note about the search path used by dlopen(3). 2015-07-03 10:19:29 +00:00
wiz
369139181c Bump date for previous. 2015-05-05 08:08:33 +00:00
buhrow
3a2e9669fe Add a -b flag so that clients that return their acknowledgements to the
broadcast address can inter-operate with the tftpd server.
Discussed in bin/49868
2015-05-05 05:50:31 +00:00
mrg
56ba1ad0cf fix content type handling to not hard code (wrong) values for length,
but just call strlen() as needed.  call this 20150501.

reported by Jan Danielsson for ".svg".
2015-05-02 11:35:48 +00:00
mlelstv
826a26234a Use verrx with a va_list. 2015-04-26 08:56:19 +00:00
mlelstv
e0bd604ced size output buffer for strunvis to include the trailing NUL character. 2015-04-26 08:03:05 +00:00
christos
46b8188b2d Fix deref "command" after "free(file)", from KIYOHARA Takashi 2015-04-19 19:05:19 +00:00
mrg
1d0520b606 install as bozohttpd/bozohttpd.8 as well as httpd. 2015-04-16 02:32:33 +00:00
yamt
b549d229c6 Fix membars around rtld internal mutex.
This fixes the most of lockups i observed with Open vSwitch
on NetBSD/amd64.  ("most of" because it still occasionally
locks up because of other problems.  see PR/49816)
2015-04-06 09:34:15 +00:00
joerg
e0985a06ba lib/49813: Release mutex on error. 2015-04-04 18:51:57 +00:00
chopps
f89312b935 - Fix fallout for recent bread() change (removing cred arg). 2015-03-29 19:35:58 +00:00
matt
32b939b05c Update RISCV to use the ELF relocations and new ABI. 2015-03-27 23:14:53 +00:00
mrg
4135f5d46d copyright maintenance, note shm@ in the manual and update the CHANGES
for recent changes.  call this 20150320.
2015-03-20 19:54:53 +00:00
mrg
bcc73e9553 don't quote /. it doesn't work. this should fix PR#49765. 2015-03-20 18:54:18 +00:00
skrll
70289840ad HPPA hack for a problem where gdb doesn't see _rtld_debug_state when
it's a single bv,n %r0(%rp) instruction.

The nullify confuses something.
2015-03-05 09:49:53 +00:00
aymeric
45a53d184f Fix previous commit by using tty00 as an example of dialin peripheral instead
of dialout dty00.
Thanks to mrg@ for pointing it out.
2015-02-12 07:32:09 +00:00
snj
411a393d8d spit out a 403 not just when an open() fails with EPERM, but with
EACCES as well.
2015-01-27 04:20:23 +00:00
christos
068e5a5145 blacklist hooks 2015-01-25 15:52:44 +00:00
mrg
9e53ba939e more for the previous: make sure [i - 1] can never go negative. 2014-12-26 19:52:00 +00:00
mrg
7ce92dc944 properly handle ilen = 0 case, which could lead to array underflow.
pointed out by Maxime Villard.
2014-12-26 19:48:52 +00:00
wiz
c1a74a82ca Bring this man page back to this decade. 2014-12-25 18:56:28 +00:00
mrg
2b5d1d7deb call this 20141225. 2014-12-25 18:53:06 +00:00
chs
a60c43758e fix powerpc TLS problems by removing the hacks for PPC EABI.
the kernel no longer treats R2 specially and its use as
the TLS register is now handled entirely in userland.
2014-12-14 23:49:17 +00:00
mrg
d0483d05da add .ts and .vob suffixes. 2014-12-13 19:30:04 +00:00
shm
60a0878843 Fixed memory leak in case of multiple authentication headers sent by the
client.

OK mrg@
2014-11-21 08:58:28 +00:00
shm
b8c713d1a2 Fixed off-by-one in virtualhost processing. Previous code was checking if
Host header is a prefix of any existing vhost. This behaviour might be used to
uncover existing vitual hosts from the remote.

OK @mrg
2014-11-21 08:54:12 +00:00
aymeric
1885c4ecdf update the example to use dty00 instead of ttyd0 to reflect a current practice 2014-11-12 21:56:48 +00:00
martin
2782e828f4 Avoid use after free, reported by the coverity scanner. 2014-10-30 07:53:41 +00:00
mrg
6ec24a2914 don't truncate file sizes to 32 bits for directory indexes. 2014-10-10 05:10:59 +00:00
matt
463829e46a RISC-V support. 2014-09-19 17:43:33 +00:00
matt
6cf6fe02a9 New files for Userland support of UCB RISC-V (both 32-bit and 64-bit) 2014-09-19 17:36:24 +00:00
matt
27620987b8 New files for OR1K support 2014-09-03 19:34:25 +00:00
matt
00cc626e2f OR1K support 2014-09-03 19:31:32 +00:00
joerg
e4cd9bc4a2 Remove (now duplicated) target computation. 2014-08-31 20:06:22 +00:00
christos
94e1a89978 remove unused define 2014-08-27 04:07:04 +00:00
joerg
c1a71e8076 Restore parenthesis to cast in the right order. 2014-08-26 21:20:05 +00:00
joerg
b88be9f652 Replace casts in the inline version of _rtld_call_function_void of
_rtld_call_function_addr with ifdef on RTLD_LOADER.
2014-08-26 19:49:33 +00:00
christos
db25848c17 fix set but not used. 2014-08-26 15:06:50 +00:00
joerg
5d06599748 Go back to skipping init/fini handling for ldd, makes problems for 32bit
compat on LP64.
2014-08-26 12:14:14 +00:00
christos
d9972a4666 Introduce a cast to fix the build for Elf32 on _LP64. 2014-08-26 07:54:27 +00:00
joerg
7a1a6f1cf3 Add basic support for indirect functions. It allows providing a public
function symbol with an implementation choosen at run time.
Refactor calls to functions by address in ld.elf_so to create temporary
function descriptors on the stack, if the address is not leaked outside.

Limitations:
- no support for initialising static storage with function pointers
- no support for unnamed resolver functions

Inspired by FreeBSD's r228435 by kib@freebsd.org.
2014-08-25 20:40:52 +00:00
joerg
f5cd842d49 Outdated, kill. 2014-08-23 19:18:41 +00:00
joerg
6a83645936 Typo. 2014-08-23 18:05:33 +00:00
matt
5b3354816c Add proper registers for register counts. 2014-08-17 16:57:37 +00:00
matt
d32bdc3217 add a missing register prefix. 2014-08-17 16:14:19 +00:00
mbalmer
fe91fb6abb NUL terminate a string. 2014-08-15 19:35:28 +00:00
matt
30993f706c Use -fPIC since powerpc64 is always compiled as -fPIC and -fpic would cause
__PIC__ to change.
2014-08-15 09:40:07 +00:00
joerg
8a961968a8 Build position independent on PPC64, too. 2014-08-13 15:56:52 +00:00
matt
243b0ccea7 Don't provide __gnu_Unwind_Find_exidx if __ARM_DWARF_EH__ is defined 2014-08-10 23:35:26 +00:00
matt
547b3a3b01 Changes to existing files to enable building AARCH64 userland.
evbarm64-el
This is clang only.  While gcc4.8 supports aarch64, no netbsd support has
been written for aarch64 with gcc4.8.
2014-08-10 05:56:36 +00:00
matt
beb9c6d1b5 Preliminary files for AARCH64 (64-bit ARM) support.
Enough for a distribution build.
2014-08-10 05:47:35 +00:00
matt
154c7bc749 Fix parenthesis on __ha macro 2014-07-28 17:28:13 +00:00
lneto
4ab4902eb2 lua: updated from 5.1 to 5.3 work3
* lua(1):
  - changed lua_Integer to intmax_t
  - updated distrib/sets/lists and etc/mtree
  - updated bsd.lua.mk
  - fixed bozohttpd (lua-bozo.c)
  - compatibilized bindings: gpio, sqlite
* lua(4):
  - removed floating-point and libc dependencies using '#ifndef _KERNEL'
  - fixed division by zero and exponentiation
  - libkern: added isalnum(), iscntrl(), isgraph(), isprint() and ispunct()
  - acpica: removed isprint() from acnetbsd.h
  - libc: moved strcspn.c, strpbrk.c and strspn.c to common
  - removed stub headers
  - compatibilized bindings: luapmf, luasystm
* reorganized luaconf.h
* updated doc/CHANGES and doc/RESPONSIBLE
2014-07-19 18:38:33 +00:00
mrg
e8a778f4c0 call this 20140717. 2014-07-17 10:21:51 +00:00
mrg
71b444f24e rewrite much of the SSL code:
- handle errors in many places they weren't properly
- make SSL_accept() an error the main code notices
- expand bozo_ssl_err() to include bozo_ssl_warn(), bozo_clear_ssl_queue()
- remove empty bozo_ssl_flush()
2014-07-17 06:27:52 +00:00
mrg
cce952fc91 link against main.c and ssl-bozo.c (which provides the IO backend.) 2014-07-17 06:24:57 +00:00
mrg
002519bfa2 use const and remove unnecessary braces. 2014-07-17 06:14:46 +00:00
mrg
f3239b26ff make a minor output change match again. 2014-07-16 14:47:59 +00:00
mrg
dfbb0220fc make -t chroot option available always again. 2014-07-16 07:41:43 +00:00
mrg
8c06d93b7b call this bozohttpd 20140708, and add/fix a couple of CHANGES entries. 2014-07-08 14:06:17 +00:00
mrg
a212be1ee8 avoid truncating a directory path when using snprintf(), but instead
detect and return an error.

found and fixed by shm@netbsd.
2014-07-08 14:01:21 +00:00
mrg
681e9c9b00 make export-distfile target slightly more stable. 2014-07-08 13:59:39 +00:00
shm
d1ed37e48d Handle ENAMETOOLONG to return 404 error instead of 500.
OK mrg@
2014-07-02 13:58:09 +00:00
shm
ca5b33a5e8 * bozo_clean_request free(3) clean up (removed needless checks)
* HEAD method no longer returns response body on error
* fixed bug with multiple bozo_http_error calls caused by fix_url_percent

OK @mrg
2014-07-01 13:41:21 +00:00
dholland
fedb6c32b4 put the sccsids back here too 2014-06-26 03:24:51 +00:00
shm
55b8853aa5 PR/48810 use cgi handler for index files
OK mrg@ martin@
2014-06-24 07:23:59 +00:00
christos
bcd3afec62 Although the kernel handles non-NUL terminated interface names, it is better
to avoid this, and all other places that create ifdr_name use strlcpy anyway
so make it conform.
2014-06-06 15:33:14 +00:00
joerg
a300913f30 Remove remaining kvm glue. 2014-06-02 19:29:58 +00:00
joerg
b760a206df Remove majority of KVM usage. 2014-06-02 18:17:51 +00:00
joerg
80a70b4c48 Remove !BSD and lint branches. 2014-06-02 17:40:05 +00:00
mrg
5893f1db8f bump version, note .svg support. 2014-05-17 05:50:46 +00:00
mrg
f434e335cc enable .svg. as prompted by agc@. 2014-05-17 05:50:01 +00:00
martin
b87a9303be The table of masks applied for each relocation type was wrong for some
relocs with 64bit targets, like GLOB_DAT.
Change some instruction patterns used for PLT slots, so -current
objdump -d shows what the comment says.
Fix encoding of %lox() in PLT slots "close" to -1.
Enhance debug output slightly.
2014-04-02 14:11:25 +00:00
matt
a1f21652d9 Make sure r1 is preserved _rtld_bind_start. 2014-03-22 15:13:10 +00:00
matt
e26b436cdb Simplify. If we got called via a calls $n, *pcrel32, instead of constructing
a new stack frame, back up the PC by 7 and return back to the calls so it
will be reinvoked.  (This is by far the most common way it gets invoked).
Otherwise rebuild a new callframe and jump to the routine.
2014-03-21 14:03:30 +00:00
matt
bc069d405c Improve some of the rdbg messages to print the address of the pltgot slot
being modified.
2014-03-21 01:43:33 +00:00
matt
22fbc67ed0 Don't resolve symbols to PLT entries on the VAX. It just causes a lot of
overhead.
2014-03-21 01:40:41 +00:00
joerg
f8bf5bbce0 Save actual start of function, not address of entry mask on the stack. 2014-03-19 21:52:00 +00:00
matt
f71aaf7afb Fix two bugs. (jump past entry mask, fix insv) 2014-03-19 15:34:30 +00:00
matt
db747c73e4 Once we know the bound routine, rebuilt a new callframe that can be unwound
properly.
2014-03-19 02:39:22 +00:00
matt
bf06b1032e Add .cfi ops so that one can unwind through this. 2014-03-18 23:43:38 +00:00
riastradh
6cb10275d0 Merge riastradh-drm2 to HEAD. 2014-03-18 18:20:35 +00:00
joerg
47875e291b Ignore LD_BIND_NOW for setuid binaries, but keep it in the environment
otherwise.
2014-03-18 16:05:34 +00:00
gson
b941da03f1 Delay daemonization until RPC services have been registered.
Fixes one of the race conditions of PR misc/48282.
2014-03-18 11:00:20 +00:00
matt
cdbe3bab4f Change OUTPUT to powerpc:common to make powerpc64 ld happy 2014-03-07 05:57:46 +00:00
matt
9b490ebf92 Make ldd happy 2014-03-07 01:27:14 +00:00
matt
1200e7d3fe More PPC64 changes.
Nothing to do for lazy bindings.
Record DT_PPC64_GLINK and make _rtld_bind return it.
When resolving a JMP_SLOT, copy the source function descriptor into the PLTGOT
2014-03-06 19:19:40 +00:00
matt
15089cc505 Enable building ld.elf_so for powerpc
Produce a link map for ld.elf_so
2014-03-06 09:34:56 +00:00
matt
565a18129d Make ELF64 aware. 2014-03-06 09:34:07 +00:00
matt
fab57a4af5 powerpc64 changes 2014-03-06 07:47:39 +00:00
matt
746070937f Startup file for powerpc64. (too many difference with ppc32 to do
#ifdef dance)
2014-03-06 07:47:19 +00:00
joerg
5c4c6caf71 Make the abs() use check non-fatal for a bogus use in the LFS cleanerd. 2014-03-04 21:06:47 +00:00
joerg
79880c64ab Global variable is never a null pointer. 2014-02-27 18:20:21 +00:00
mrg
7db440fedd - bump man page date
- strip :80 off virtual host names as they're the default
2014-02-09 12:32:32 +00:00
mrg
ca768e99f0 some fixes for virtual hosting support from Rajeev V. Pillai:
- memory leaks in virtual host plugged
- ensure hr_host is only the host/port part when the request
  contains the hostname in the URI not Host: header.


also update the references to the old http/1.1 draft rev 06
to RFC 2616 (fortunately, most sections hadn't moved.)
2014-02-09 01:46:10 +00:00
mrg
ee81b5bfee display the tempdir for exported files as well. 2014-02-02 03:20:57 +00:00
mrg
7f3f4479d2 call gzip directly for distfile export target; it's usually run outside
of the normal build.
2014-02-02 03:20:10 +00:00
mrg
4d12e4bc49 add lua-bozo.c. 2014-02-02 03:14:58 +00:00
mrg
496aca988c update for 2014-02-01. 2014-02-02 03:13:31 +00:00
joerg
15f3733bef Catch up with _lwp_park change. 2014-01-31 22:46:40 +00:00
mrg
95e8de7784 move a variable into the scope of its use, where the assignment
has already validated the pointers used.  fixes a bug reported
in private email from dogcow@.
2014-01-30 02:51:41 +00:00
apb
a452d8c9e2 Pass the -n flag to gzip invocations.
This prevents it from embedding a timestamp in the output.  We pass
"-n" unconditionally, not conditional on MKREPRO, because many other
invocations of gzip already passed the -n flag unconditionally.
2014-01-27 21:37:17 +00:00
apb
36ef98548b Use ${TOOL_GZIP} instead of just gzip in all Makefiles
outside */dist/* subdirectories.

When USE_PIGZGZIP=yes, bsd.own.mk sets TOOL_GZIP=${TOOL_PIGZ},
so there's no need to test USE_PIGZGZIP in these Makefiles.
2014-01-27 08:18:07 +00:00
joerg
cb2eb1a336 Don't align random sections. Simplify by using .pushsection/.popsection. 2014-01-12 19:36:08 +00:00
mrg
8af74a22fc sort the contributor list, and update the defines list to include lua. 2014-01-02 08:47:38 +00:00
mrg
6810043c20 update for 20140102. 2014-01-02 08:30:22 +00:00
mrg
44293cacb5 update version, date and copyright. 2014-01-02 08:22:59 +00:00
mrg
d1b43391bd - update CHANGES with recent changes
- update version to 20140102
- update copyrights
- use getcwd() over getwd()
- fix lean build (don't include lua)
2014-01-02 08:21:38 +00:00
matt
467f6149c3 Don't use GOT relocations. Use PC relative for the GOT and GOTOFF for
_DYNAMIC.  Make thumb friendly.
2013-12-03 00:19:56 +00:00
christos
5fbbc292aa CID 1132773: Fix file descriptor leak 2013-11-27 18:01:33 +00:00
skrll
03ee7fc3bc If dlopen of the dynamic linker is requested, e.g. by rump in
rumpuser_dl_bootstrap, then return &_rtld_objself as the handle and do
not create a duplicate mapping.

The handle is mostly useless as _rtld_objself doesn't appear on
_rtld_objlist.

This fixes a problem on earm platforms where ld.elf_so (currently) has
an init_array section.  Calling this caused binaries to segv.
2013-11-20 07:18:23 +00:00
mbalmer
8bbb1276fe fix bad free 2013-11-19 07:51:56 +00:00
skrll
90c0a95fec Remove hack now it's fixed in 4.8.2 2013-11-16 17:14:06 +00:00
christos
1f8b65e5d5 CID 1107545, 1107546: fix memory leak 2013-11-13 21:46:22 +00:00
christos
04c9845e3b CID 1107546: Fix memory leak 2013-11-13 21:44:29 +00:00
skrll
283152d4ee Apply hack for gcc 4.8 bug on rtld.c. 2013-11-13 11:06:53 +00:00
joerg
5e2fc1bbd3 Only initialise TLS space from the PT_TLS segment, if the size is
positive and the offset has been computed. Fixes PR lib/48324.
2013-10-21 19:14:15 +00:00
christos
193b880fad fix unused variable warnings 2013-10-19 17:19:30 +00:00
skrll
3ea7549453 Add debug code. 2013-10-19 10:14:06 +00:00
mbalmer
0dfc484ad7 fold long line in a readable way; pass nil as query table if reading form data fails 2013-10-17 08:07:54 +00:00
mbalmer
b972118e3e better approach to NUL terminate strings 2013-10-17 07:54:19 +00:00
mbalmer
a6427458c1 plug a memory leak 2013-10-17 07:49:06 +00:00
mbalmer
de3f2be777 zero allocated memory buffers 2013-10-17 07:31:31 +00:00
he
10f296ec2a Also depend on LIBLUA, and add -lm to allow static linking. 2013-10-16 10:04:26 +00:00
wiz
c9283f1155 Sort. More markup. 2013-10-12 22:37:43 +00:00
mbalmer
b65f3decc3 no need to check free() arguments against NULL 2013-10-12 18:46:12 +00:00
mbalmer
6c154a3125 it's Lua, not lua 2013-10-12 17:25:18 +00:00
mbalmer
cb23152c39 add Lua scripting support to bozohttpd, see httpd(8) for details 2013-10-12 17:24:06 +00:00
mbalmer
bee8901ae3 remove trailing whitespace 2013-10-12 07:49:40 +00:00
matt
fa741d8823 Use MACHINE_CPU for m68k. Use similar logic for both tests. 2013-10-09 22:33:41 +00:00
jnemeth
4862012f0e - complete renaming of -w to -c from 1.38
- update usage string to match
- this fixes PR/48234 by Jeff Woodall
2013-10-04 07:51:48 +00:00
martin
abea8b316b The R_SPARC_L44 relocation type is documented to be truncating and
calculated as "(S + A) & 0xfff" - so while it (usually) sets a "imm13" field
in the opcode, only 12 bits of the calculated value can be used.
2013-10-03 10:45:57 +00:00