diff --git a/src/libutil/include/nix/util/util.hh b/src/libutil/include/nix/util/util.hh index 56041a112..765da8698 100644 --- a/src/libutil/include/nix/util/util.hh +++ b/src/libutil/include/nix/util/util.hh @@ -214,6 +214,10 @@ typename T::mapped_type * get(T & map, const typename T::key_type & key) return &i->second; } +/** Deleted because this is use-after-free liability. Just don't pass temporaries to this overload set. */ +template +typename T::mapped_type * get(T && map, const typename T::key_type & key) = delete; + /** * Get a value for the specified key from an associate container, or a default value if the key isn't present. */ @@ -227,6 +231,11 @@ getOr(T & map, const typename T::key_type & key, const typename T::mapped_type & return i->second; } +/** Deleted because this is use-after-free liability. Just don't pass temporaries to this overload set. */ +template +const typename T::mapped_type & +getOr(T && map, const typename T::key_type & key, const typename T::mapped_type & defaultValue) = delete; + /** * Remove and return the first item from a container. */