The Samba-Bugzilla – Attachment 15146 Details for
Bug 13842
Multiple bugs found in reg_parse by fuzzing
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Updated git-am fix.
bug-13842.master (text/plain), 20.24 KB, created by
Jeremy Allison
on 2019-05-13 22:57:40 UTC
(
hide
)
Description:
Updated git-am fix.
Filename:
MIME Type:
Creator:
Jeremy Allison
Created:
2019-05-13 22:57:40 UTC
Size:
20.24 KB
patch
obsolete
>From 7a26dd8e17b3261d6b726432ed08d6b4ff4d1026 Mon Sep 17 00:00:00 2001 >From: Jeremy Allison <jra@samba.org> >Date: Mon, 25 Mar 2019 10:32:08 -0700 >Subject: [PATCH 1/5] s3: net: Harden guess_charset() against overflow errors. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=13842 > >Signed-off-by: Jeremy Allison <jra@samba.org> >--- > source3/registry/reg_parse.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > >diff --git a/source3/registry/reg_parse.c b/source3/registry/reg_parse.c >index 81815a4fd98..3093e6acf76 100644 >--- a/source3/registry/reg_parse.c >+++ b/source3/registry/reg_parse.c >@@ -688,7 +688,15 @@ static bool guess_charset(const char** ptr, > } > > if (srprs_bom(&pos, &charset, NULL)) { >- *len -= (pos - *ptr); >+ size_t declen; >+ if (pos < *ptr) { >+ return false; >+ } >+ declen = (pos - *ptr); >+ if (*len < declen) { >+ return false; >+ } >+ *len -= declen; > *ptr = pos; > if (*file_enc == NULL) { > *file_enc = charset; >-- >2.21.0.1020.gf2820cf01a-goog > > >From ceae664466b886629266b0d4d3abf15e2fc53d38 Mon Sep 17 00:00:00 2001 >From: Jeremy Allison <jra@samba.org> >Date: Mon, 25 Mar 2019 11:13:24 -0700 >Subject: [PATCH 2/5] s3: net: Harden act_val_hex() act_val_sz() against > errors. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=13842 > >Signed-off-by: Jeremy Allison <jra@samba.org> >--- > source3/registry/reg_parse.c | 2 ++ > 1 file changed, 2 insertions(+) > >diff --git a/source3/registry/reg_parse.c b/source3/registry/reg_parse.c >index 3093e6acf76..caf2a063b02 100644 >--- a/source3/registry/reg_parse.c >+++ b/source3/registry/reg_parse.c >@@ -117,6 +117,7 @@ static bool act_val_hex(struct reg_parse* p, cbuf* value, bool cont) > cbuf_swapptr(p->valblob, &dst, dlen); > } else { > DEBUG(0, ("iconvert_talloc failed\n")); >+ return false; > } > talloc_free(dst); > } >@@ -166,6 +167,7 @@ static bool act_val_sz(struct reg_parse* p, cbuf* value, bool cont) > } else { > DEBUG(0, ("convert_string_talloc failed: >%s<\n" > "use it as is\t", src)); >+ return false; > } > talloc_free(dst); > >-- >2.21.0.1020.gf2820cf01a-goog > > >From 7b139405ba13db938b54d389855347136e95ff4e Mon Sep 17 00:00:00 2001 >From: Jeremy Allison <jra@samba.org> >Date: Mon, 13 May 2019 13:45:10 -0700 >Subject: [PATCH 3/5] s3: net: Harden srprs_str() against memcmp overread. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=13842 > >Signed-off-by: Jeremy Allison <jra@samba.org> >--- > source3/lib/srprs.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > >diff --git a/source3/lib/srprs.c b/source3/lib/srprs.c >index 02f4c80e27b..67ada3796f0 100644 >--- a/source3/lib/srprs.c >+++ b/source3/lib/srprs.c >@@ -46,9 +46,17 @@ bool srprs_char(const char** ptr, char c) { > > bool srprs_str(const char** ptr, const char* str, ssize_t len) > { >+ /* By definition *ptr must be null terminated. */ >+ size_t ptr_len = strlen(*ptr); >+ > if (len == -1) > len = strlen(str); > >+ /* Don't memcmp read past end of buffer. */ >+ if (len > ptr_len) { >+ return false; >+ } >+ > if (memcmp(*ptr, str, len) == 0) { > *ptr += len; > return true; >-- >2.21.0.1020.gf2820cf01a-goog > > >From 676152777da71469f1d4a49f9ab28e9bdae4edde Mon Sep 17 00:00:00 2001 >From: Jeremy Allison <jra@samba.org> >Date: Tue, 7 May 2019 10:42:55 -0700 >Subject: [PATCH 4/5] s3: net: Rewrite of reg_parse_fd() to harden against > buffer overwrites. > >Remove unused handle_iconv_errno(). > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=13842 > >Signed-off-by: Jeremy Allison <jra@samba.org> >--- > source3/registry/reg_parse.c | 294 +++++++++++++++++++++++------------ > 1 file changed, 195 insertions(+), 99 deletions(-) > >diff --git a/source3/registry/reg_parse.c b/source3/registry/reg_parse.c >index caf2a063b02..be268208600 100644 >--- a/source3/registry/reg_parse.c >+++ b/source3/registry/reg_parse.c >@@ -787,59 +787,13 @@ done: > return ret; > } > >- >-static void >-handle_iconv_errno(int err, const char* obuf, size_t linenum, >- smb_iconv_t cd, const char** iptr, size_t* ilen, >- char** optr, size_t *olen) >+static void display_iconv_error_bytes(const char *inbuf, size_t len) > { >- const char *pos = obuf; >- const char *ptr = obuf; >- switch(err) { >- case EINVAL: >- /* DEBUG(0, ("Incomplete multibyte sequence\n")); */ >- case E2BIG: >- return; >- case EILSEQ: >- break; >- default: >- assert(false); >- } >- >- **optr = '\0'; >- while (srprs_line(&ptr, NULL) && srprs_nl(&ptr, NULL)) { >- pos = ptr; >- linenum++; >+ size_t i; >+ for (i = 0; i < 4 && i < len; i++) { >+ DEBUGADD(0, ("<%02x>", (unsigned char)inbuf[i])); > } >- if (pos == *optr) { >- pos = MAX(obuf, *optr-60); >- } >- DEBUG(0, ("Illegal multibyte sequence at line %lu: %s", >- (long unsigned)(linenum+1), pos)); >- >- assert((*ilen) > 0); >- do { >- size_t il = 1; >- DEBUGADD(0, ("<%02x>", (unsigned char)**iptr)); >- >- if ((*olen) > 0) { >- *(*optr)++ = '\?'; >- (*iptr)++; >- /* Todo: parametrize, e.g. skip: *optr++ = *iptr++; */ >- (*ilen)--; >- } >- >- if (smb_iconv(cd, iptr, &il, optr, olen) != (size_t)-1 || (errno != EILSEQ)) { >- if(il == 0) >- (*ilen)-- ; >- break; >- } >- >- } >- while ((*ilen > 0) && (*olen > 0)); >- > DEBUGADD(0, ("\n")); >- > } > > int reg_parse_fd(int fd, const struct reg_parse_callback* cb, const char* opts) >@@ -848,105 +802,247 @@ int reg_parse_fd(int fd, const struct reg_parse_callback* cb, const char* opts) > cbuf* line = cbuf_new(mem_ctx); > smb_iconv_t cd = (smb_iconv_t)-1; > struct reg_parse* parser = NULL; >- char buf_raw[1024]; >- char buf_unix[1025]; >- >+ char buf_in[1024]; >+ char buf_out[1025] = { 0 }; > ssize_t nread; >- size_t nconv; >- const char* pos; > const char* iptr; > char* optr; > size_t ilen; > size_t olen; >+ size_t avail_osize = sizeof(buf_out)-1; >+ size_t space_to_read = sizeof(buf_in); > int ret = -1; > bool eof = false; >- size_t linenum = 0; >+ size_t linecount = 0; > > struct reg_parse_fd_opt opt = reg_parse_fd_opt(mem_ctx, opts); > > if (cb == NULL) { >- DEBUG(0,("reg_parse_fd: NULL callback\n")); >+ DBG_ERR("NULL callback\n"); >+ ret = -1; > goto done; > } > >- nread = read(fd, buf_raw, sizeof(buf_raw)); >+ nread = read(fd, buf_in, space_to_read); > if (nread < 0) { >- DEBUG(0, ("reg_parse_fd: read failed: %s\n", strerror(errno))); >- ret = nread; >+ DBG_ERR("read failed: %s\n", strerror(errno)); >+ ret = -1; >+ goto done; >+ } >+ if (nread == 0) { >+ /* Empty file. */ >+ eof = true; > goto done; > } > >- iptr = &buf_raw[0]; >+ iptr = buf_in; > ilen = nread; > > if (!guess_charset(&iptr, &ilen, > &opt.file_enc, &opt.str_enc)) > { >- DEBUG(0, ("reg_parse_fd: failed to guess encoding\n")); >+ DBG_ERR("reg_parse_fd: failed to guess encoding\n"); >+ ret = -1; >+ goto done; >+ } >+ >+ if (ilen == 0) { >+ /* File only contained charset info. */ >+ eof = true; >+ ret = -1; > goto done; > } > >- DEBUG(10, ("reg_parse_fd: encoding file: %s str: %s\n", >- opt.file_enc, opt.str_enc)); >+ DBG_DEBUG("reg_parse_fd: encoding file: %s str: %s\n", >+ opt.file_enc, opt.str_enc); > > > if (!set_iconv(&cd, "unix", opt.file_enc)) { >- DEBUG(0, ("reg_parse_fd: failed to set file encoding %s\n", >- opt.file_enc)); >+ DBG_ERR("reg_parse_fd: failed to set file encoding %s\n", >+ opt.file_enc); >+ ret = -1; > goto done; > } > > parser = reg_parse_new(mem_ctx, *cb, opt.str_enc, opt.flags); > >- optr = &buf_unix[0]; >+ /* Move input data to start of buf_in. */ >+ if (iptr > buf_in) { >+ memmove(buf_in, iptr, ilen); >+ iptr = buf_in; >+ } >+ >+ optr = buf_out; >+ /* Leave last byte for null termination. */ >+ olen = avail_osize; >+ >+ /* >+ * We read from buf_in (iptr), iconv converting into >+ * buf_out (optr). >+ */ >+ > while (!eof) { >- olen = sizeof(buf_unix) - (optr - buf_unix) - 1 ; >- while ( olen > 0 ) { >- memmove(buf_raw, iptr, ilen); >- >- nread = read(fd, buf_raw + ilen, sizeof(buf_raw) - ilen); >- if (nread < 0) { >- DEBUG(0, ("reg_parse_fd: read failed: %s\n", strerror(errno))); >- ret = nread; >+ const char *pos; >+ size_t nconv; >+ >+ if (olen == 0) { >+ /* We're out of possible room. */ >+ DBG_ERR("no room in output buffer\n"); >+ ret = -1; >+ goto done; >+ } >+ nconv = smb_iconv(cd, &iptr, &ilen, &optr, &olen); >+ if (nconv == (size_t)-1) { >+ bool valid_err = false; >+ if (errno == EINVAL) { >+ valid_err = true; >+ } >+ if (errno == E2BIG) { >+ valid_err = true; >+ } >+ if (!valid_err) { >+ DBG_ERR("smb_iconv error in file at line %zu: ", >+ linecount); >+ display_iconv_error_bytes(iptr, ilen); >+ ret = -1; > goto done; > } >+ /* >+ * For valid errors process the >+ * existing buffer then continue. >+ */ >+ } > >- iptr = buf_raw; >- ilen += nread; >- >- if (ilen == 0) { >- smb_iconv(cd, NULL, NULL, &optr, &olen); >- eof = true; >- break; >- } >+ /* >+ * We know this is safe as we have an extra >+ * enforced zero byte at the end of buf_out. >+ */ >+ *optr = '\0'; >+ pos = buf_out; > >- nconv = smb_iconv(cd, &iptr, &ilen, &optr, &olen); >+ while (srprs_line(&pos, line) && srprs_nl_no_eos(&pos, line, eof)) { >+ int retval; > >- if (nconv == (size_t)-1) { >- handle_iconv_errno(errno, buf_unix, linenum, >- cd, &iptr, &ilen, >- &optr, &olen); >- break; >+ /* Process all lines we got. */ >+ retval = reg_parse_line(parser, cbuf_gets(line, 0)); >+ if (retval < opt.fail_level) { >+ DBG_ERR("reg_parse_line %zu fail %d\n", >+ linecount, >+ retval); >+ ret = -1; >+ goto done; > } >+ cbuf_clear(line); >+ linecount++; > } >- /* process_lines: */ >- *optr = '\0'; >- pos = &buf_unix[0]; >+ if (pos > buf_out) { >+ /* >+ * The output data we have >+ * processed starts at buf_out >+ * and ends at pos. >+ * The unprocessed output >+ * data starts at pos and >+ * ends at optr. >+ * >+ * <------ sizeof(buf_out) - 1------------->|0| >+ * <--------- avail_osize------------------>|0| >+ * +----------------------+-------+-----------+ >+ * | | | |0| >+ * +----------------------+-------+-----------+ >+ * ^ ^ ^ >+ * | | | >+ * buf_out pos optr >+ */ >+ size_t unprocessed_len; >+ >+ /* Paranoia checks. */ >+ if (optr < pos) { >+ ret = -1; >+ goto done; >+ } >+ unprocessed_len = optr - pos; > >- while ( srprs_line(&pos, line) && srprs_nl_no_eos(&pos, line, eof)) { >- linenum ++; >- ret = reg_parse_line(parser, cbuf_gets(line, 0)); >- if (ret < opt.fail_level) { >+ /* Paranoia checks. */ >+ if (avail_osize < unprocessed_len) { >+ ret = -1; > goto done; > } >- cbuf_clear(line); >+ /* Move down any unprocessed data. */ >+ memmove(buf_out, pos, unprocessed_len); >+ >+ /* >+ * After the move, reset the output length. >+ * >+ * <------ sizeof(buf_out) - 1------------->|0| >+ * <--------- avail_osize------------------>|0| >+ * +----------------------+-------+-----------+ >+ * | | |0| >+ * +----------------------+-------+-----------+ >+ * ^ ^ >+ * | optr >+ * buf_out >+ */ >+ optr = buf_out + unprocessed_len; >+ /* >+ * Calculate the new output space available >+ * for iconv. >+ * We already did the paranoia check for this >+ * arithmetic above. >+ */ >+ olen = avail_osize - unprocessed_len; > } >- memmove(buf_unix, pos, optr - pos); >- optr -= (pos - buf_unix); >+ >+ /* >+ * Move any unprocessed data to the start of >+ * the input buffer (buf_in). >+ */ >+ if (ilen > 0 && iptr > buf_in) { >+ memmove(buf_in, iptr, ilen); >+ } >+ >+ /* Is there any space to read more input ? */ >+ if (ilen >= sizeof(buf_in)) { >+ /* No space. Nothing was converted. Error. */ >+ DBG_ERR("no space in input buffer\n"); >+ ret = -1; >+ goto done; >+ } >+ >+ space_to_read = sizeof(buf_in) - ilen; >+ >+ /* Read the next chunk from the file. */ >+ nread = read(fd, buf_in, space_to_read); >+ if (nread < 0) { >+ DBG_ERR("read failed: %s\n", strerror(errno)); >+ ret = -1; >+ goto done; >+ } >+ if (nread == 0) { >+ /* Empty file. */ >+ eof = true; >+ continue; >+ } >+ >+ /* Paranoia check. */ >+ if (nread + ilen < ilen) { >+ ret = -1; >+ goto done; >+ } >+ >+ /* Paranoia check. */ >+ if (nread + ilen > sizeof(buf_in)) { >+ ret = -1; >+ goto done; >+ } >+ >+ iptr = buf_in; >+ ilen = nread + ilen; > } > > ret = 0; >+ > done: >+ > set_iconv(&cd, NULL, NULL); > talloc_free(mem_ctx); > return ret; >-- >2.21.0.1020.gf2820cf01a-goog > > >From 5a8ba7eeb93f739853b45987ec6316ee8cf4272c Mon Sep 17 00:00:00 2001 >From: Jeremy Allison <jra@samba.org> >Date: Thu, 9 May 2019 14:34:37 -0700 >Subject: [PATCH 5/5] s3: net: Test of fuzzer problems with net rpc registry > import. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=13842 > >Signed-off-by: Jeremy Allison <jra@samba.org> >--- > .../script/tests/test_net_registry_import.sh | 192 ++++++++++++++++++ > source3/selftest/tests.py | 1 + > 2 files changed, 193 insertions(+) > create mode 100755 source3/script/tests/test_net_registry_import.sh > >diff --git a/source3/script/tests/test_net_registry_import.sh b/source3/script/tests/test_net_registry_import.sh >new file mode 100755 >index 00000000000..40e68fad875 >--- /dev/null >+++ b/source3/script/tests/test_net_registry_import.sh >@@ -0,0 +1,192 @@ >+#!/bin/sh >+ >+if [ $# -lt 4 ]; then >+cat <<EOF >+Usage: test_net_registry_import.sh SERVER LOCAL_PATH USERNAME PASSWORD >+EOF >+exit 1; >+fi >+ >+SERVER="$1" >+LOCAL_PATH="$2" >+USERNAME="$3" >+PASSWORD="$4" >+shift 4 >+ADDARGS="$@" >+ >+failed=0 >+ >+samba_net="$BINDIR/net" >+ >+incdir=`dirname $0`/../../../testprogs/blackbox >+. $incdir/subunit.sh >+ >+ >+test_net_registry_import() { >+ >+# >+# Expect: >+# Found Byte Order Mark for : UTF-16LE >+# >+ cmd='$VALGRIND $samba_net rpc registry import $LOCAL_PATH/case3b45ccc3b.dat -S$SERVER -U$USERNAME%$PASSWORD $ADDARGS' >+ >+ eval echo "$cmd" >+ out=`eval $cmd 2>&1` >+ ret=$? >+ >+ if [ $ret != 0 ] ; then >+ echo "$out" >+ echo "command failed with output $ret" >+ false >+ return >+ fi >+ >+ echo "$out" | grep 'Found Byte Order Mark for : UTF-16LE' >+ ret=$? >+ >+ if [ $ret -ne 0 ] ; then >+ echo "$out" >+ echo "$samba_net rpc registry import $LOCAL_PATH/case3b45ccc3b.dat failed - should get 'Found Byte Order Mark for : UTF-16LE'" >+ false >+ return >+ fi >+ >+# >+# Expect: >+# reg_parse_fd: smb_iconv error in file at line 0: <bf><77><d4><41> >+# >+ cmd='$VALGRIND $samba_net rpc registry import $LOCAL_PATH/casecbe8c2427.dat -S$SERVER -U$USERNAME%$PASSWORD $ADDARGS' >+ >+ eval echo "$cmd" >+ out=`eval $cmd 2>&1` >+ ret=$? >+ >+ if [ $? != 0 ] ; then >+ echo "$out" >+ echo "command failed with output $ret" >+ false >+ return >+ fi >+ >+ echo "$out" | grep 'reg_parse_fd: smb_iconv error in file at line 0: <bf><77><d4><41>' >+ ret=$? >+ >+ if [ $ret -ne 0 ] ; then >+ echo "$out" >+ echo "$samba_net rpc registry import $LOCAL_PATH/case3b45ccc3b.dat failed - should get 'reg_parse_fd: smb_iconv error in file at line 0: <bf><77><d4><41>'" >+ false >+ return >+ fi >+ >+# >+# For test3.dat, the parse of the first part of the file is successful, >+# but fails on upload as we're writing to an unwriteable registry. >+# Expect: >+# setval ProductType failed: WERR_REGISTRY_IO_FAILED >+# reg_parse_fd: reg_parse_line line 21 fail -2 >+# This counts as a success test as the file is parsed, but >+# the upload failed. >+# >+ cmd='$VALGRIND $samba_net rpc registry import $LOCAL_PATH/regtest3.dat -S$SERVER -U$USERNAME%$PASSWORD $ADDARGS' >+ >+ eval echo "$cmd" >+ out=`eval $cmd 2>&1` >+ ret=$? >+ >+ if [ $? != 0 ] ; then >+ echo "$out" >+ echo "command failed with output $ret" >+ false >+ return >+ fi >+ >+ echo "$out" | grep 'setval ProductType failed: WERR_REGISTRY_IO_FAILED' >+ ret=$? >+ >+ if [ $ret -ne 0 ] ; then >+ echo "$out" >+ echo "$samba_net rpc registry import $LOCAL_PATH/regtest3.dat failed - should get 'setval ProductType failed: WERR_REGISTRY_IO_FAILED'" >+ false >+ return >+ fi >+ >+ echo "$out" | grep 'reg_parse_fd: reg_parse_line 20 fail -2' >+ ret=$? >+ >+ if [ $ret -ne 0 ] ; then >+ echo "$out" >+ echo "$samba_net rpc registry import $LOCAL_PATH/regtest3.dat failed - should get 'reg_parse_fd: reg_parse_line 20 fail -2'" >+ false >+ return >+ fi >+ >+ true >+ return >+} >+ >+########################################################### >+# Check net rpc registry import doesn't crash >+########################################################### >+ >+ rm -f $LOCAL_PATH/case3b45ccc3b.dat >+ rm -f $LOCAL_PATH/casecbe8c2427.dat >+ rm -f $LOCAL_PATH/regtest3.dat >+ >+# Create test cases >+ >+ base64 -d <<'EOF' | gunzip -c > $LOCAL_PATH/case3b45ccc3b.dat >+H4sIAODLjlwCA/v/L5whkyGPIYUhn6GcoZhBgSGIIZUhHShWzFDCUMRQCRRxBcpmAnn5QL4CQxhQ >+vggomwnk5wH5pgx6DAZAyMvABcbRDB4M3kA9kQzxDD4M/gzODI5AOp7BF0g7A+U8GfyAsjEMwUAV >+wQwhQLYvkOfMUPqRUvDw4yAHnz6OgsELgGlYh8EYCHXA6RnENmLIgbJNGZLh4jEMvEWRee8eXl8u >+//f8N9vK5cVVXP9v2rB+/qYw+3xko5Su8jSiLZ0zwJ4GAO4s/cYABAAA >+EOF >+ >+ base64 -d <<'EOF' | gunzip -c > $LOCAL_PATH/casecbe8c2427.dat >+H4sIALjPjlwCA2NwZfBliGFwZihlKALCVIY8hhIgLx9MFwHpHIZgoGgJUA2ILmIoY8hkSAayioEi >+OQyJQHW5YLIcqLaIIRsoXgLklwBVgcyIYSgA8oqAOBdsCsiEYoZYBl4GLgYlsG2JDElAc1KB6kCm >+ZYLtTWWoAJIgncVACDE5BajeFkjCeFYMBijQEIuZxUCcDPZZJkNJ3f7yK45/V3S8epR2I14uf+4W >+ee+dz0RXshv4SHxzff2XJYbx0pWaEs+ul5XKF9hlFIu4RG73Lf3rOXHW3NxpuvVnE9Xk7zxv2p3I >+tlLtWjY/i1HIGhdpLy/Gub9nH5jLd/rqdYfv2uumzgq7PIldPY3Labru/65Q/nLJh1oBk/0tT2v2 >+eUdbzFg0NfPmamFH421aJxMPhnr7X+y0iRdSX+ex+IJ0Yaf0ahV5440Wj7cbK/jkbSjcNdvpR+WN >+/5Knnn8PjvvD9O/Ws4pXUqG3lbdFrf1846zzcTOFW8yhB3QNZRP6TjOsu1rDvIaHZVfMyYd1Mhev >+ik/a5m36Y85+y63pPmtXb8nOU5Zd0qK0yVJK8a27WqKHSOKaS7wpwULu1TsM94bVGD3xviR0u1Il >+rFHoxeUrm2+6Ke4x2SGitD912ZGfLcmG0xiyIn+bmx0+s+dbXuT8xfl+CgL168yNzYxCgsviz/46 >+b7746Wnh8zXZHDof6/yDyxdf31JkzN5YVP4kf/vkvrS1ioauYemc3RIt7znZQvpOy7XO8VU5+KeP >+VXKPXrzr+nMv/v5wkpA7v2TukgqHZ4e6i+Zsjfny6vHdg7+mLFjg/th4m55ppH75HYcLjEa/U4/w >+SeXMTuVXablo/fmJnlPA6T12usz8nBGVKbVzTNqrTJ6d/+Y0y2bGc5MlzgnymUVq/9/PyZ2QxZvR >+4WyR810zd32X5ncJRd/y7VNCd746G/jTTFLTJfHx86dVtlkL02zeCJeYsmkdrXVhtpl7Y5OOyJcD >+DJXA9JPJkA5MT8YMOuA0psNgBExRMLYZgwkSOxnM1kdiG6CQkNTpD0zXGeBc4AJMx7nQFF8MTttA >+8f8VDBoM5gya4NRNtgN0zczNjM1MDCwMLcwMTCwtLYxNjLE4wK5pwpebAAJ05DUABAAA >+EOF >+ >+ base64 -d <<'EOF' > $LOCAL_PATH/regtest3.dat >+UkVHRURJVDQKCltIS0VZX0xPQ0FMX01BQ0hJTkVdCgpbSEtFWV9MT0NBTF9NQUNISU5FXFNPRlRX >+QVJFXQoKW0hLRVlfTE9DQUxfTUFDSElORVxTT0ZUV0FSRVxNaWNyb3NvZnRdCgpbSEtFWV9MT0NB >+TF9NQUNISU5FXFNPRlRXQVJFXE1pY3Jvc29mdFxXaW5kb3dzIE5UXQoKW0hLRVlfTE9DQUxfTUFD >+SElORVxTT0ZUV0FSRVxNaWNyb3NvZnRcV2luZG93cyBOVFxDdXJyZW50VmVyc2lvbl0KIkN1cnJl >+bnRWZXJzaW9uIj0iNi4xIgoKW0hLRVlfTE9DQUxfTUFDSElORVxTWVNURU1dCgpbSEtFWV9MT0NB >+TF9NQUNISU5FXFNZU1RFTVxDdXJyZW50Q29udHJvbFNldF0KCltIS0VZX0xPQ0FMX01BQ0hJTkVc >+U1lTVEVNXEN1cnJlbnRDb250cm9sU2V0XENvbnRyb2xdCgpbSEtFWV9MT0NBTF9NQUNISU5FXFNZ >+U1RFTVxDdXJyZW50Q29udHJvbFNldFxDb250cm9sXFByb2R1Y3RPcHRpb25zXQoiUHJvZHVjdFR5 >+cGUiPSJMYW5tYW5OVCIKCltIS0VZX0xPQ0FMX01BQ0hJTkVcU1lTVEVNXEN1cnJlbnRDb250cm9s >+U2V0XENvbnRyb2xcUHJpbnRdCgpbSEtFWV9MT0NBTF9NQUNISU5FXFNZU1RFTVxDdXJyZW50Q29u >+dHJvbFNldFxDb250cm9sXFRlcm1pbmFsIFNlcnZlcl0KCltIS0VZX0xPQ0FMX01BQ0hJTkVcU1lT >+VEVNXQoKW0hLRVlfTE9DQUxfTUFDSElORVxTWVNURU1cQ3VycmVudENvbnRyb2xTZXRdCgpbSEtF >+WV9MT0NBTF9NQUNISU5FXFNZU1RFTVxDdXJyZW50Q29udHJvbFNldFxTZXJ2aWNlc10KCltIS0VZ >+X0xPQ0FMX01BQ0hJTkVcU1lTVEVNXEN1cnJlbnRDb250cm9sU2V0XFNlcnZpY2VzXE5ldGxvZ29u >+XQoKW0hLRVlfTE9DQUxfTUFDSElORVxTWVNURU1cQ3VycmVudENvbnRyb2xTZXRcU2VydmljZXNc >+TmV0bG9nb25cUGFyYW1ldGVyc10KIlJlZnVzZVBhc3N3b3JkQ2hhbmdlIj1kd29yZDowMDAwMDAw >+MAoKW0hLRVlfTE9DQUxfTUFDSElORVxTWVNURU1cQ3VycmVudENvbnRyb2xTZXRcU2VydmljZXNc >+QWxlcnRlcl0KCltIS0VZX0xPQ0FMX01BQ0hJTkVcU1lTVEVNXEN1cnJlbnRDb250cm9sU2V0XA== >+EOF >+ >+testit "Test net rpc registry import" \ >+ test_net_registry_import || \ >+ failed=`expr $failed + 1` >+ >+# Clean up test cases. >+ rm -f $LOCAL_PATH/case3b45ccc3b.dat >+ rm -f $LOCAL_PATH/casecbe8c2427.dat >+ rm -f $LOCAL_PATH/regtest3.dat >+ >+testok $0 $failed >diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py >index b18b8f07eba..4df2553a525 100755 >--- a/source3/selftest/tests.py >+++ b/source3/selftest/tests.py >@@ -366,6 +366,7 @@ for env in ["fileserver:local"]: > plantestsuite("samba3.blackbox.net_usershare", env, [os.path.join(samba3srcdir, "script/tests/test_net_usershare.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbclient3]) > > plantestsuite("samba3.blackbox.smbstatus", env, [os.path.join(samba3srcdir, "script/tests/test_smbstatus.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, smbstatus, configuration, "SMB3"]) >+ plantestsuite("samba3.blackbox.net_registry_import", env, [os.path.join(samba3srcdir, "script/tests/test_net_registry_import.sh"), '$SERVER', '$LOCAL_PATH', '$USERNAME', '$PASSWORD']) > > # TODO encrypted against member, with member creds, and with DC creds > plantestsuite("samba3.blackbox.net.misc", "nt4_dc:local", >-- >2.21.0.1020.gf2820cf01a-goog >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 13842
:
15128
|
15142
|
15146
|
15148