From: Michael Vrable Date: Wed, 30 Jul 2008 18:48:45 +0000 (-0700) Subject: Update restore.pl for new snapshot format (v0.8). X-Git-Url: https://git.vrable.net/?a=commitdiff_plain;h=9181f284453bf0471ffd06bd8ef16408758e108f;p=cumulus.git Update restore.pl for new snapshot format (v0.8). --- diff --git a/contrib/restore.pl b/contrib/restore.pl index 98ae277..0af9dea 100755 --- a/contrib/restore.pl +++ b/contrib/restore.pl @@ -122,17 +122,21 @@ sub load_ref { # If a range was specified, then only a subset of the bytes of the object # are desired. Extract just the desired bytes. if ($range) { - if ($range !~ m/^\[((\d+)\+)?(\d+)\]$/) { - die "Malformed object range: $range"; - } - my $object_size = length $contents; my ($start, $length); - if (defined($1)) { - ($start, $length) = ($2 + 0, $3 + 0); - } else { + + if ($range =~ m/^\[=(\d+)\]$/) { + die "Object size incorrect (ref $ref_str, actual size $object_size" + if $object_size != $1; + ($start, $length) = (0, $1 + 0); + } elsif ($range =~ m/^\[(\d+)\]$/) { ($start, $length) = (0, $3 + 0); + } elsif ($range =~ m/^\[(\d+)\+(\d+)\]$/) { + ($start, $length) = ($1 + 0, $2 + 0); + } else { + die "Malformed object range: $range"; } + if ($start >= $object_size || $start + $length > $object_size) { die "Object range $range falls outside object bounds " . "(actual size $object_size)";