diff options
author | Bo Yang <boyang@novell.com> | 2009-02-20 12:00:46 +0800 |
---|---|---|
committer | Derrell Lipman <derrell.lipman@unwireduniverse.com> | 2009-02-20 09:46:46 -0500 |
commit | e256d72f0cd66c374f14a122623668de888aa5e7 (patch) | |
tree | ac0dfb0c38db1d9bb0ae353ef4013b5fd11f36ce /source3/libsmb/libsmb_path.c | |
parent | 27307be0f726c899c0e8a0edfdf200650037bb61 (diff) | |
download | samba-e256d72f0cd66c374f14a122623668de888aa5e7.tar.gz samba-e256d72f0cd66c374f14a122623668de888aa5e7.tar.bz2 samba-e256d72f0cd66c374f14a122623668de888aa5e7.zip |
Make libsmbclient work with DFS
Signed-off-by: Derrell Lipman <derrell.lipman@unwireduniverse.com>
Diffstat (limited to 'source3/libsmb/libsmb_path.c')
-rw-r--r-- | source3/libsmb/libsmb_path.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/source3/libsmb/libsmb_path.c b/source3/libsmb/libsmb_path.c index 6d69924231..3ea03446d8 100644 --- a/source3/libsmb/libsmb_path.c +++ b/source3/libsmb/libsmb_path.c @@ -233,6 +233,7 @@ SMBC_parse_path(TALLOC_CTX *ctx, char *s; const char *p; char *q, *r; + char *workgroup = NULL; int len; /* Ensure these returns are at least valid pointers. */ @@ -332,7 +333,6 @@ SMBC_parse_path(TALLOC_CTX *ctx, u = userinfo; if (strchr_m(u, ';')) { - char *workgroup; next_token_no_ltrim_talloc(ctx, &u, &workgroup, ";"); if (!workgroup) { return -1; @@ -394,6 +394,19 @@ decoding: (void) urldecode_talloc(ctx, pp_share, *pp_share); (void) urldecode_talloc(ctx, pp_user, *pp_user); (void) urldecode_talloc(ctx, pp_password, *pp_password); + + if (!workgroup) { + workgroup = talloc_strdup(ctx, smbc_getWorkgroup(context)); + } + if (!workgroup) { + return -1; + } + + /* set the credentials to make DFS work */ + smbc_set_credentials_with_fallback(context, + workgroup, + *pp_user, + *pp_password); return 0; } |