Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/security/sandbox/linux/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 2 kB image not shown  

Quelle  SandboxProfilerParent.h   Sprache: C

 
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */


#ifndef SANDBOX_PROFILER_PARENT_H
#define SANDBOX_PROFILER_PARENT_H

#include "SandboxProfiler.h"
#include "SandboxInfo.h"

#if defined(HAVE_REPORT_UPROFILER_CHILD)
#error Cannot include SandboxProfilerParent.h when already included SandboxProfilerChild.h
#endif

#define HAVE_REPORT_UPROFILER_PARENT

namespace mozilla {

struct UprofilerFuncPtrs uprofiler = {
    .register_thread = uprofiler_register_thread,
    .unregister_thread = uprofiler_unregister_thread,
    .simple_event_marker = uprofiler_simple_event_marker,
    .simple_event_marker_capture_stack =
        uprofiler_simple_event_marker_capture_stack,
    .simple_event_marker_with_stack = uprofiler_simple_event_marker_with_stack,
    .backtrace_into_buffer = uprofiler_backtrace_into_buffer,
    .native_backtrace = uprofiler_native_backtrace,
    .is_active = uprofiler_is_active,
    .feature_active = uprofiler_feature_active,
};

bool uprofiler_initted = true;

#if defined(DEBUG)
// On the parent side there is no sandbox so calls don't have to care about that
thread_local Atomic<bool> sInSignalContext = Atomic<bool>(false);
#endif  // defined(DEBUG)

/* static */
void SandboxProfiler::ReportAudit(const char* aKind, const char* aOp,
                                  int aFlags, uint64_t aId, int aPerms,
                                  const char* aPath, pid_t aPid) {
  if (!Active()) {
    return;
  }

  std::array arg_names = {"id""op""rflags""path""pid"};
  std::array arg_types = {
      TRACE_VALUE_TYPE_UINT,    // id
      TRACE_VALUE_TYPE_STRING,  // op
      TRACE_VALUE_TYPE_UINT,    // rflags
      TRACE_VALUE_TYPE_STRING,  // path
      TRACE_VALUE_TYPE_UINT     // pid
  };

  std::array arg_values = {static_cast<unsigned long long>(aId),
                           reinterpret_cast<unsigned long long>(aOp),
                           static_cast<unsigned long long>(aFlags),
                           reinterpret_cast<unsigned long long>(aPath),
                           static_cast<unsigned long long>(aPid)};

  Report(aKind, arg_names, arg_types, arg_values, nullptr);
}

/*  static */
void SandboxProfiler::ReportLog(const char* buf) {
  if (!Active()) {
    return;
  }

  if (!SandboxInfo::Get().Test(SandboxInfo::kVerbose) &&
      !SandboxInfo::Get().Test(SandboxInfo::kVerboseTests)) {
    return;
  }

  std::array arg_names = {"log"};
  std::array arg_types = {
      TRACE_VALUE_TYPE_STRING,
  };
  std::array arg_values = {reinterpret_cast<unsigned long long>(buf)};

  Report("SandboxBroker::Log", arg_names, arg_types, arg_values, nullptr);
}

}  // namespace mozilla

#endif  // SANDBOX_PROFILER_PARENT_H

Messung V0.5
C=87 H=100 G=93

¤ Dauer der Verarbeitung: 0.0 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.