Author: vlendec Date: 2007-08-19 20:00:43 +0000 (Sun, 19 Aug 2007) New Revision: 24549
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=24549 Log: Fix unix_convert to return the already converted part This API will change anyway when moving away from pstrings. It took so long to fix, because that rename bug I just fixed gave make test failures that had nothing to do with this one. I have samba4 tests for both bugs, will check them in when the build farm has caught up Modified: branches/SAMBA_3_2/source/smbd/filename.c branches/SAMBA_3_2_0/source/smbd/filename.c Changeset: Modified: branches/SAMBA_3_2/source/smbd/filename.c =================================================================== --- branches/SAMBA_3_2/source/smbd/filename.c 2007-08-19 19:57:55 UTC (rev 24548) +++ branches/SAMBA_3_2/source/smbd/filename.c 2007-08-19 20:00:43 UTC (rev 24549) @@ -173,7 +173,7 @@ result =determine_path_error( &orig_path[2], allow_wcard_last_component); } - goto fail; + return result; } /* @@ -222,8 +222,8 @@ if ((dirpath == NULL) && (!(dirpath = SMB_STRDUP("")))) { DEBUG(0, ("strdup failed\n")); - result = NT_STATUS_NO_MEMORY; - goto fail; + SAFE_FREE(name); + return NT_STATUS_NO_MEMORY; } /* @@ -602,9 +602,15 @@ DEBUG(5,("conversion finished %s -> %s\n",orig_path, name)); done: - result = NT_STATUS_OK; pstrcpy(orig_path, name); + SAFE_FREE(name); + SAFE_FREE(dirpath); + return NT_STATUS_OK; fail: + DEBUG(10, ("dirpath = [%s] start = [%s]\n", dirpath, start)); + pstrcpy(orig_path, dirpath); + pstrcat(orig_path, "/"); + pstrcat(orig_path, start); SAFE_FREE(name); SAFE_FREE(dirpath); return result; Modified: branches/SAMBA_3_2_0/source/smbd/filename.c =================================================================== --- branches/SAMBA_3_2_0/source/smbd/filename.c 2007-08-19 19:57:55 UTC (rev 24548) +++ branches/SAMBA_3_2_0/source/smbd/filename.c 2007-08-19 20:00:43 UTC (rev 24549) @@ -173,7 +173,7 @@ result =determine_path_error( &orig_path[2], allow_wcard_last_component); } - goto fail; + return result; } /* @@ -222,8 +222,8 @@ if ((dirpath == NULL) && (!(dirpath = SMB_STRDUP("")))) { DEBUG(0, ("strdup failed\n")); - result = NT_STATUS_NO_MEMORY; - goto fail; + SAFE_FREE(name); + return NT_STATUS_NO_MEMORY; } /* @@ -602,9 +602,15 @@ DEBUG(5,("conversion finished %s -> %s\n",orig_path, name)); done: - result = NT_STATUS_OK; pstrcpy(orig_path, name); + SAFE_FREE(name); + SAFE_FREE(dirpath); + return NT_STATUS_OK; fail: + DEBUG(10, ("dirpath = [%s] start = [%s]\n", dirpath, start)); + pstrcpy(orig_path, dirpath); + pstrcat(orig_path, "/"); + pstrcat(orig_path, start); SAFE_FREE(name); SAFE_FREE(dirpath); return result;