X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=bup.git;a=blobdiff_plain;f=lib%2Fbup%2Fbupsplit.c;h=d9760f5321d2e9b22673cfafd655ce129aa92cb9;hp=f8132a171e253a45dde61e2b35d942288152c301;hb=bf67f94dd4f4096de4eee07a7dc377d6c889a016;hpb=f86b7b82b6d2111a240ed395e1792a4f791c1f49 diff --git a/lib/bup/bupsplit.c b/lib/bup/bupsplit.c index f8132a1..d9760f5 100644 --- a/lib/bup/bupsplit.c +++ b/lib/bup/bupsplit.c @@ -15,17 +15,18 @@ * the documentation and/or other materials provided with the * distribution. * - * THIS SOFTWARE IS PROVIDED BY AVERY PENNARUN ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY AVERY PENNARUN AND CONTRIBUTORS ``AS + * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "bupsplit.h" #include @@ -105,7 +106,6 @@ int bupsplit_find_ofs(const unsigned char *buf, int len, int *bits) if (bits) { unsigned rsum = rollsum_digest(&r); - *bits = BUP_BLOBBITS; rsum >>= BUP_BLOBBITS; for (*bits = BUP_BLOBBITS; (rsum >>= 1) & 1; (*bits)++) ; @@ -118,22 +118,23 @@ int bupsplit_find_ofs(const unsigned char *buf, int len, int *bits) #ifndef BUP_NO_SELFTEST +#define BUP_SELFTEST_SIZE 100000 int bupsplit_selftest() { - uint8_t buf[100000]; + uint8_t *buf = malloc(BUP_SELFTEST_SIZE); uint32_t sum1a, sum1b, sum2a, sum2b, sum3a, sum3b; unsigned count; srandom(1); - for (count = 0; count < sizeof(buf); count++) + for (count = 0; count < BUP_SELFTEST_SIZE; count++) buf[count] = random(); - sum1a = rollsum_sum(buf, 0, sizeof(buf)); - sum1b = rollsum_sum(buf, 1, sizeof(buf)); - sum2a = rollsum_sum(buf, sizeof(buf) - BUP_WINDOWSIZE*5/2, - sizeof(buf) - BUP_WINDOWSIZE); - sum2b = rollsum_sum(buf, 0, sizeof(buf) - BUP_WINDOWSIZE); + sum1a = rollsum_sum(buf, 0, BUP_SELFTEST_SIZE); + sum1b = rollsum_sum(buf, 1, BUP_SELFTEST_SIZE); + sum2a = rollsum_sum(buf, BUP_SELFTEST_SIZE - BUP_WINDOWSIZE*5/2, + BUP_SELFTEST_SIZE - BUP_WINDOWSIZE); + sum2b = rollsum_sum(buf, 0, BUP_SELFTEST_SIZE - BUP_WINDOWSIZE); sum3a = rollsum_sum(buf, 0, BUP_WINDOWSIZE+3); sum3b = rollsum_sum(buf, 3, BUP_WINDOWSIZE+3); @@ -144,6 +145,7 @@ int bupsplit_selftest() fprintf(stderr, "sum3a = 0x%08x\n", sum3a); fprintf(stderr, "sum3b = 0x%08x\n", sum3b); + free(buf); return sum1a!=sum1b || sum2a!=sum2b || sum3a!=sum3b; }