X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Frepopack.h;h=3079239873269f1c4f0f002bba280362ddb23f64;hb=e1659dc4ce74d3c47f465103951dafff8fc0cf9f;hp=c551022b0da881057a1d2e4db1d14c5e85831e6d;hpb=00086144de9620dbf06225136b6d0e14e04582f6;p=platform%2Fupstream%2Flibsolv.git diff --git a/src/repopack.h b/src/repopack.h index c551022..3079239 100644 --- a/src/repopack.h +++ b/src/repopack.h @@ -41,6 +41,7 @@ data_read_id(unsigned char *dp, Id *idp) *idp = x; return dp + 5; } + x ^= 80; dp += 5; for (;;) { @@ -87,7 +88,7 @@ data_read_num64(unsigned char *dp, unsigned int *low, unsigned int *high) *high = (dp[0] ^ 0x80) >> 4; return dp + 5; } - x = (unsigned long long)(dp[0] ^ 0x80) << 28 ^ (unsigned int)(dp[1] << 21 ^ dp[2] << 14 ^ dp[3] << 7 ^ dp[4] ^ 0x10204000); + x = (unsigned long long)(dp[0] ^ 0x80) << 28 ^ (unsigned int)(dp[1] << 21 ^ dp[2] << 14 ^ dp[3] << 7 ^ dp[4] ^ 0x10204080); dp += 5; for (;;) { @@ -163,14 +164,29 @@ data_fetch(unsigned char *dp, KeyValue *kv, Repokey *key) kv->num2 = 0; return data_read_u32(dp, &kv->num); case REPOKEY_TYPE_MD5: + kv->num = 0; /* not stringified yet */ kv->str = (const char *)dp; return dp + SIZEOF_MD5; case REPOKEY_TYPE_SHA1: + kv->num = 0; /* not stringified yet */ kv->str = (const char *)dp; return dp + SIZEOF_SHA1; + case REPOKEY_TYPE_SHA224: + kv->num = 0; /* not stringified yet */ + kv->str = (const char *)dp; + return dp + SIZEOF_SHA224; case REPOKEY_TYPE_SHA256: + kv->num = 0; /* not stringified yet */ kv->str = (const char *)dp; return dp + SIZEOF_SHA256; + case REPOKEY_TYPE_SHA384: + kv->num = 0; /* not stringified yet */ + kv->str = (const char *)dp; + return dp + SIZEOF_SHA384; + case REPOKEY_TYPE_SHA512: + kv->num = 0; /* not stringified yet */ + kv->str = (const char *)dp; + return dp + SIZEOF_SHA512; case REPOKEY_TYPE_BINARY: dp = data_read_id(dp, (Id *)&kv->num); kv->str = (const char *)dp; @@ -179,6 +195,7 @@ data_fetch(unsigned char *dp, KeyValue *kv, Repokey *key) return data_read_ideof(dp, &kv->id, &kv->eof); case REPOKEY_TYPE_DIRSTRARRAY: dp = data_read_ideof(dp, &kv->id, &kv->eof); + kv->num = 0; /* not stringified yet */ kv->str = (const char *)dp; return dp + strlen(kv->str) + 1; case REPOKEY_TYPE_DIRNUMNUMARRAY: @@ -218,8 +235,14 @@ data_skip(unsigned char *dp, int type) return dp + SIZEOF_MD5; case REPOKEY_TYPE_SHA1: return dp + SIZEOF_SHA1; + case REPOKEY_TYPE_SHA224: + return dp + SIZEOF_SHA224; case REPOKEY_TYPE_SHA256: return dp + SIZEOF_SHA256; + case REPOKEY_TYPE_SHA384: + return dp + SIZEOF_SHA384; + case REPOKEY_TYPE_SHA512: + return dp + SIZEOF_SHA512; case REPOKEY_TYPE_IDARRAY: case REPOKEY_TYPE_REL_IDARRAY: while ((*dp & 0xc0) != 0) @@ -290,8 +313,14 @@ data_skip_verify(unsigned char *dp, int type, int maxid, int maxdir) return dp + SIZEOF_MD5; case REPOKEY_TYPE_SHA1: return dp + SIZEOF_SHA1; + case REPOKEY_TYPE_SHA224: + return dp + SIZEOF_SHA224; case REPOKEY_TYPE_SHA256: return dp + SIZEOF_SHA256; + case REPOKEY_TYPE_SHA384: + return dp + SIZEOF_SHA384; + case REPOKEY_TYPE_SHA512: + return dp + SIZEOF_SHA512; case REPOKEY_TYPE_ID: dp = data_read_id(dp, &id); if (id >= maxid)