diff options
author | Andreas Schneider <asn@samba.org> | 2018-01-05 10:50:57 +0100 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2018-05-09 09:48:21 +0200 |
commit | 4a9c164d0abfa30db3f943d1224ca95d87fdf95a (patch) | |
tree | 71663a78ce75f8fae672deac8433e4b862dfdc7e | |
parent | 02b898e44d3b71670473cd7698b27d7448d0a96e (diff) | |
download | samba-4a9c164d0abfa30db3f943d1224ca95d87fdf95a.tar.gz |
smbspool: Improve URI handling code
This also checks that the URI given via the environment variables
starts with smb://
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Alexander Bokovoy <ab@samba.org>
Reviewed-by: David Disseldorp <ddiss@samba.org>
(cherry picked from commit a6eac8f64989235e7a297c14e349d98a3fc70e47)
-rw-r--r-- | source3/client/smbspool.c | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/source3/client/smbspool.c b/source3/client/smbspool.c index 3b732c99234..ff32baea204 100644 --- a/source3/client/smbspool.c +++ b/source3/client/smbspool.c @@ -100,6 +100,8 @@ main(int argc, /* I - Number of command-line arguments */ const char *dev_uri; const char *config_file = NULL; TALLOC_CTX *frame = talloc_stackframe(); + int cmp; + int len; null_str[0] = '\0'; @@ -155,20 +157,25 @@ main(int argc, /* I - Number of command-line arguments */ } /* - * Find the URI... - */ - + * Find the URI ... + */ dev_uri = getenv("DEVICE_URI"); - if (dev_uri) { - strncpy(uri, dev_uri, sizeof(uri) - 1); - } else if (strncmp(argv[1], "smb://", 6) == 0) { - strncpy(uri, argv[1], sizeof(uri) - 1); - } else { - fputs("ERROR: No device URI found in DEVICE_URI environment variable or arg1 !\n", stderr); - goto done; + if (dev_uri == NULL || strlen(dev_uri) == 0) { + dev_uri = argv[1]; } - uri[sizeof(uri) - 1] = '\0'; + cmp = strncmp(dev_uri, "smb://", 6); + if (cmp != 0) { + fprintf(stderr, + "ERROR: No valid device URI has been specified\n"); + goto done; + } + len = snprintf(uri, sizeof(uri), "%s", dev_uri); + if (len >= sizeof(uri)) { + fprintf(stderr, + "ERROR: The URI is too long.\n"); + goto done; + } /* * Extract the destination from the URI... |