Dolda2000 GitWeb
/
vcfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix a bug where at may be inside buf.
[vcfs.git]
/
store.c
diff --git
a/store.c
b/store.c
index
b8077d3
..
4d4f14f
100644
(file)
--- a/
store.c
+++ b/
store.c
@@
-79,18
+79,20
@@
int storeput(struct store *st, const void *buf, size_t len, struct addr *at)
ssize_t storeget(struct store *st, void *buf, size_t len, struct addr *at)
{
ssize_t sz;
ssize_t storeget(struct store *st, void *buf, size_t len, struct addr *at)
{
ssize_t sz;
+ struct addr at2;
- sz = cacheget(st, at, buf, len);
+ at2 = *at;
+ sz = cacheget(st, at2, buf, len);
if(sz != -2) {
if(sz == -1)
errno = ENOENT;
return(sz);
}
if(sz != -2) {
if(sz == -1)
errno = ENOENT;
return(sz);
}
- sz = st->ops->get(st, buf, len, at);
+ sz = st->ops->get(st, buf, len, at
2
);
if((sz < 0) && (errno == ENOENT))
if((sz < 0) && (errno == ENOENT))
- cacheput(st, at, NULL, -1);
+ cacheput(st, at
2
, NULL, -1);
else if(sz >= 0)
else if(sz >= 0)
- cacheput(st, at, buf, sz);
+ cacheput(st, at
2
, buf, sz);
return(sz);
}
return(sz);
}