xref: /aosp_15_r20/external/minijail/scoped_minijail.h (revision 4b9c6d91573e8b3a96609339b46361b5476dd0f9)
1*4b9c6d91SCole Faust /* Copyright 2016 The ChromiumOS Authors
2*4b9c6d91SCole Faust  * Use of this source code is governed by a BSD-style license that can be
3*4b9c6d91SCole Faust  * found in the LICENSE file.
4*4b9c6d91SCole Faust  */
5*4b9c6d91SCole Faust 
6*4b9c6d91SCole Faust #ifndef _SCOPED_MINIJAIL_H_
7*4b9c6d91SCole Faust #define _SCOPED_MINIJAIL_H_
8*4b9c6d91SCole Faust 
9*4b9c6d91SCole Faust #include <memory>
10*4b9c6d91SCole Faust 
11*4b9c6d91SCole Faust #include "libminijail.h"
12*4b9c6d91SCole Faust 
13*4b9c6d91SCole Faust namespace mj {
14*4b9c6d91SCole Faust 
15*4b9c6d91SCole Faust namespace internal {
16*4b9c6d91SCole Faust 
17*4b9c6d91SCole Faust struct ScopedMinijailDeleter {
operatorScopedMinijailDeleter18*4b9c6d91SCole Faust     inline void operator()(minijail *j) const {
19*4b9c6d91SCole Faust         if (j) {
20*4b9c6d91SCole Faust             minijail_destroy(j);
21*4b9c6d91SCole Faust         }
22*4b9c6d91SCole Faust     }
23*4b9c6d91SCole Faust };
24*4b9c6d91SCole Faust 
25*4b9c6d91SCole Faust }   // namespace internal
26*4b9c6d91SCole Faust 
27*4b9c6d91SCole Faust }   // namespace mj
28*4b9c6d91SCole Faust 
29*4b9c6d91SCole Faust using ScopedMinijail =
30*4b9c6d91SCole Faust         std::unique_ptr<minijail, mj::internal::ScopedMinijailDeleter>;
31*4b9c6d91SCole Faust 
32*4b9c6d91SCole Faust #endif /* _SCOPED_MINIJAIL_H_ */
33