LCOV - code coverage report
Current view: top level - source3/lib - smbd_shim.c (source / functions) Hit Total Coverage
Test: coverage report for master 98b443d9 Lines: 32 39 82.1 %
Date: 2024-05-31 13:13:24 Functions: 9 10 90.0 %

          Line data    Source code
       1             : /*
       2             :    Unix SMB/CIFS implementation.
       3             :    Runtime plugin adapter for various "smbd"-functions.
       4             : 
       5             :    Copyright (C) Gerald (Jerry) Carter          2004.
       6             :    Copyright (C) Andrew Bartlett                2011.
       7             : 
       8             :    This program is free software; you can redistribute it and/or modify
       9             :    it under the terms of the GNU General Public License as published by
      10             :    the Free Software Foundation; either version 3 of the License, or
      11             :    (at your option) any later version.
      12             : 
      13             :    This program is distributed in the hope that it will be useful,
      14             :    but WITHOUT ANY WARRANTY; without even the implied warranty of
      15             :    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      16             :    GNU General Public License for more details.
      17             : 
      18             :    You should have received a copy of the GNU General Public License
      19             :    along with this program.  If not, see <http://www.gnu.org/licenses/>.
      20             : */
      21             : 
      22             : /* Shim functions required due to the horrible dependency mess
      23             :    in Samba. */
      24             : 
      25             : #include "includes.h"
      26             : #include "smbd_shim.h"
      27             : 
      28             : static struct smbd_shim shim;
      29             : 
      30         600 : void set_smbd_shim(const struct smbd_shim *shim_functions)
      31             : {
      32         600 :         shim = *shim_functions;
      33         600 : }
      34             : 
      35      803726 : bool change_to_root_user(void)
      36             : {
      37      803726 :         if (shim.change_to_root_user) {
      38      803403 :                 return shim.change_to_root_user();
      39             :         }
      40         323 :         return false;
      41             : }
      42             : 
      43      603529 : bool become_authenticated_pipe_user(struct auth_session_info *session_info)
      44             : {
      45      603529 :         if (shim.become_authenticated_pipe_user) {
      46      603529 :                 return shim.become_authenticated_pipe_user(session_info);
      47             :         }
      48             : 
      49           0 :         return false;
      50             : }
      51             : 
      52      603529 : bool unbecome_authenticated_pipe_user(void)
      53             : {
      54      603529 :         if (shim.unbecome_authenticated_pipe_user) {
      55      603529 :                 return shim.unbecome_authenticated_pipe_user();
      56             :         }
      57             : 
      58           0 :         return false;
      59             : }
      60             : 
      61             : /**
      62             :  * The following two functions need to be called from inside the low-level BRL
      63             :  * code for oplocks correctness in smbd.  Since other utility binaries also
      64             :  * link in some of the brl code directly, these dummy functions are necessary
      65             :  * to avoid needing to link in the oplocks code and its dependencies to all of
      66             :  * the utility binaries.
      67             :  */
      68      193339 : void contend_level2_oplocks_begin(files_struct *fsp,
      69             :                                   enum level2_contention_type type)
      70             : {
      71      193339 :         if (shim.contend_level2_oplocks_begin) {
      72      193339 :                 shim.contend_level2_oplocks_begin(fsp, type);
      73             :         }
      74      193339 :         return;
      75             : }
      76             : 
      77      192931 : void contend_level2_oplocks_end(files_struct *fsp,
      78             :                                 enum level2_contention_type type)
      79             : {
      80      192931 :         if (shim.contend_level2_oplocks_end) {
      81      192931 :                 shim.contend_level2_oplocks_end(fsp, type);
      82             :         }
      83      192931 :         return;
      84             : }
      85             : 
      86     3966920 : void become_root(void)
      87             : {
      88     3966920 :         if (shim.become_root) {
      89     3930709 :                 shim.become_root();
      90             :         }
      91     3966920 :         return;
      92             : }
      93             : 
      94     3966920 : void unbecome_root(void)
      95             : {
      96     3966920 :         if (shim.unbecome_root) {
      97     3930709 :                 shim.unbecome_root();
      98             :         }
      99     3966920 :         return;
     100             : }
     101             : 
     102           0 : void exit_server(const char *reason)
     103             : {
     104           0 :         if (shim.exit_server) {
     105           0 :                 shim.exit_server(reason);
     106             :         }
     107           0 :         exit(1);
     108             : }
     109             : 
     110       31919 : void exit_server_cleanly(const char *const reason)
     111             : {
     112       31919 :         if (shim.exit_server_cleanly) {
     113       31919 :                 shim.exit_server_cleanly(reason);
     114             :         }
     115           0 :         exit(0);
     116             : }

Generated by: LCOV version 1.14