diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-10-08 07:05:58 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-10-08 07:05:58 +0300 |
commit | a5e631171bdcdb12f508528f391d3916014e23e8 (patch) | |
tree | 79cc6bb9d4d0c1425ac53d12496ebcba96c5ec21 /source/blender/blenlib/intern/storage.c | |
parent | e47177e301d104a8b7110e4490bf587c86835bad (diff) |
BLI_path api, minor changes to CWD handling
- BLI_current_working_dir's return value must be checked, since it may fail.
- BLI_current_working_dir now behaves like getcwd, where a too-small target will return failure.
- avoid buffer overrun with BLI_path_cwd, by taking a maxlen arg.
Diffstat (limited to 'source/blender/blenlib/intern/storage.c')
-rw-r--r-- | source/blender/blenlib/intern/storage.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c index 7fdf6ec8101..04d5e35355a 100644 --- a/source/blender/blenlib/intern/storage.c +++ b/source/blender/blenlib/intern/storage.c @@ -91,8 +91,14 @@ char *BLI_current_working_dir(char *dir, const size_t maxncpy) { const char *pwd = getenv("PWD"); if (pwd) { - BLI_strncpy(dir, pwd, maxncpy); - return dir; + size_t srclen = BLI_strnlen(pwd, maxncpy); + if (srclen != maxncpy) { + memcpy(dir, pwd, srclen); + return dir; + } + else { + return NULL; + } } return getcwd(dir, maxncpy); |