com32/chain: (partiter) dos_next_ebr() fixup
authorMichal Soltys <soltys@ziu.info>
Thu, 14 Feb 2013 15:51:46 +0000 (16:51 +0100)
committerMichal Soltys <soltys@ziu.info>
Thu, 14 Feb 2013 15:53:05 +0000 (16:53 +0100)
Make sure that *lba is set to 0, if start_lba in the record is 0. Not an
issue in any of the code using partiter currently, as that implies
either broken layout or a hole. Still useful for consistency with index
== -1 or when relax flag is set.

Signed-off-by: Michal Soltys <soltys@ziu.info>
com32/chain/partiter.c

index a4dc13d..8d0c272 100644 (file)
@@ -374,7 +374,7 @@ static int dos_next_ebr(struct part_iter *iter, uint32_t *lba,
            iter->dos.logskipcnt++;
 
        if (dp[0].ostype || (iter->flags & PIF_STEPALL)) {
-           *lba = iter->dos.cebr_lba + dp[0].start_lba;
+           *lba = dp[0].start_lba ? iter->dos.cebr_lba + dp[0].start_lba : 0;
            *_dp = dp;
            return 0;
        }