OLD | NEW |
| (Empty) |
1 /* Copyright (c) 2013 The Chromium Authors. All rights reserved. | |
2 * Use of this source code is governed by a BSD-style license that can be | |
3 * found in the LICENSE file. */ | |
4 | |
5 #include <limits.h> | |
6 #include <string.h> | |
7 | |
8 #include "nacl_io/kernel_intercept.h" | |
9 #include "nacl_io/kernel_wrap.h" | |
10 | |
11 /* | |
12 * This interception should not really be needed under glibc since we can | |
13 * hook the internal calls to getcwd. However, we need to intercept it here | |
14 * since gtest call getcwd in a static constructor which general runs before | |
15 * nacl_io is initiliased. | |
16 */ | |
17 char* getcwd(char* buf, size_t size) { | |
18 // If size is 0, allocate as much as we need. | |
19 if (size == 0) { | |
20 char stack_buf[PATH_MAX + 1]; | |
21 if (!ki_getcwd(stack_buf, PATH_MAX)) | |
22 return NULL; | |
23 size = strlen(stack_buf) + 1; | |
24 } | |
25 // Allocate the buffer if needed | |
26 if (buf == NULL) { | |
27 buf = (char*)malloc(size); | |
28 } | |
29 return ki_getcwd(buf, size); | |
30 } | |
OLD | NEW |