diff --git a/utils/utils.c b/utils/utils.c index 296c1f1962d5d8a45e5ef716270da8403bc8d25e..38ec3fad629eb965e7e6423b9acd3705506e7c4b 100644 --- a/utils/utils.c +++ b/utils/utils.c @@ -228,30 +228,17 @@ int resolve_link(const char *prefix, char *path) if( rl[0] == '/' ) { - const int pl = strlen( prefix ); - - if( pl + rv > PATH_MAX ) + if( build_filename( path, PATH_MAX, prefix, rl, NULL ) >= PATH_MAX ) { - rv = -1; goto out; } - - safe_strncpy( path, prefix, PATH_MAX ); - safe_strncpy( path + pl, rl, PATH_MAX - pl ); } else { - const int pl = strlen( dir ); - - if( pl + rv + 1 > PATH_MAX ) + if( build_filename( path, PATH_MAX, dir, rl, NULL ) >= PATH_MAX ) { - rv = -1; goto out; } - - safe_strncpy( path, dir, PATH_MAX ); - path[ pl ] = '/'; - safe_strncpy( path + pl + 1, rl, PATH_MAX - pl - 1 ); } }