summaryrefslogtreecommitdiff
path: root/debian/patches/refcount-use-after-free.patch
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2014-09-02 23:11:54 +0200
committerJustus Winter <4winter@informatik.uni-hamburg.de>2014-09-02 23:11:54 +0200
commitb64368cc55bf3c44a80ac8f83ef7feab7aca3cab (patch)
treeb0b6b16ca2889112f183d75feeed8dcb0e416b89 /debian/patches/refcount-use-after-free.patch
parentcfcd520ff021b0561e662bb01f770c5b11f54385 (diff)
prepare for splitinit patch series
Diffstat (limited to 'debian/patches/refcount-use-after-free.patch')
-rw-r--r--debian/patches/refcount-use-after-free.patch57
1 files changed, 0 insertions, 57 deletions
diff --git a/debian/patches/refcount-use-after-free.patch b/debian/patches/refcount-use-after-free.patch
deleted file mode 100644
index b753f459..00000000
--- a/debian/patches/refcount-use-after-free.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-diff --git a/include/refcount.h b/include/refcount.h
-index 785b052..533fdfe 100644
---- a/include/refcount.h
-+++ b/include/refcount.h
-@@ -31,10 +31,11 @@
- /* An opaque type. You must not access these values directly. */
- typedef unsigned int refcount_t;
-
--/* Initialize REF with REFERENCES. */
-+/* Initialize REF with REFERENCES. REFERENCES must not be zero. */
- static inline void
- refcount_init (refcount_t *ref, unsigned int references)
- {
-+ assert (references > 0 || !"references must not be zero!");
- *ref = references;
- }
-
-@@ -47,6 +48,7 @@ refcount_ref (refcount_t *ref)
- unsigned int r;
- r = __atomic_add_fetch (ref, 1, __ATOMIC_RELAXED);
- assert (r != UINT_MAX || !"refcount overflowed!");
-+ assert (r != 1 || !"refcount detected use after free!");
- return r;
- }
-
-@@ -101,10 +103,12 @@ union _references {
- uint64_t value;
- };
-
--/* Initialize REF with HARD and WEAK references. */
-+/* Initialize REF with HARD and WEAK references. HARD and WEAK must
-+ not both be zero. */
- static inline void
- refcounts_init (refcounts_t *ref, uint32_t hard, uint32_t weak)
- {
-+ assert ((hard != 0 || weak != 0) || !"references must not both be zero!");
- ref->references = (struct references) { .hard = hard, .weak = weak };
- }
-
-@@ -119,6 +123,8 @@ refcounts_ref (refcounts_t *ref, struct references *result)
- union _references r;
- r.value = __atomic_add_fetch (&ref->value, op.value, __ATOMIC_RELAXED);
- assert (r.references.hard != UINT32_MAX || !"refcount overflowed!");
-+ assert (! (r.references.hard == 1 && r.references.weak == 0)
-+ || !"refcount detected use after free!");
- if (result)
- *result = r.references;
- }
-@@ -208,6 +214,8 @@ refcounts_ref_weak (refcounts_t *ref, struct references *result)
- union _references r;
- r.value = __atomic_add_fetch (&ref->value, op.value, __ATOMIC_RELAXED);
- assert (r.references.weak != UINT32_MAX || !"refcount overflowed!");
-+ assert (! (r.references.hard == 0 && r.references.weak == 1)
-+ || !"refcount detected use after free!");
- if (result)
- *result = r.references;
- }