Avoid dereference of a freed vnode's operations table

* src/androidvfs.c (android_renameat_noreplace):
(android_rename): Free vdst using vdst->ops, not vp->ops.
This commit is contained in:
Po Lu 2023-07-27 18:17:12 +08:00
parent 24711be050
commit c85222a593

View file

@ -5581,7 +5581,7 @@ android_renameat_noreplace (int srcfd, const char *src,
/* Now try to rename vp to vdst. */
rc = (*vp->ops->rename) (vp, vdst, true);
(*vp->ops->close) (vp);
(*vp->ops->close) (vdst);
(*vdst->ops->close) (vdst);
return rc;
error1:
@ -5613,7 +5613,7 @@ android_rename (const char *src, const char *dst)
/* Now try to rename vp to vdst. */
rc = (*vp->ops->rename) (vp, vdst, false);
(*vp->ops->close) (vp);
(*vp->ops->close) (vdst);
(*vdst->ops->close) (vdst);
return rc;
error1: