LCOV - code coverage report
Current view: top level - source3/lib - smbd_shim.c (source / functions) Hit Total Coverage
Test: coverage report for v4-17-test 1498b464 Lines: 35 43 81.4 %
Date: 2024-06-13 04:01:37 Functions: 10 11 90.9 %

          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         191 : void set_smbd_shim(const struct smbd_shim *shim_functions)
      31             : {
      32         191 :         shim = *shim_functions;
      33         191 : }
      34             : 
      35         808 : void send_stat_cache_delete_message(struct messaging_context *msg_ctx,
      36             :                                     const char *name)
      37             : {
      38         808 :         if (shim.send_stat_cache_delete_message) {
      39         808 :                 shim.send_stat_cache_delete_message(msg_ctx, name);
      40             :         }
      41         808 : }
      42             : 
      43       72114 : bool change_to_root_user(void)
      44             : {
      45       72114 :         if (shim.change_to_root_user) {
      46       72114 :                 return shim.change_to_root_user();
      47             :         }
      48           0 :         return false;
      49             : }
      50             : 
      51        9236 : bool become_authenticated_pipe_user(struct auth_session_info *session_info)
      52             : {
      53        9236 :         if (shim.become_authenticated_pipe_user) {
      54        9236 :                 return shim.become_authenticated_pipe_user(session_info);
      55             :         }
      56             : 
      57           0 :         return false;
      58             : }
      59             : 
      60        9233 : bool unbecome_authenticated_pipe_user(void)
      61             : {
      62        9233 :         if (shim.unbecome_authenticated_pipe_user) {
      63        9233 :                 return shim.unbecome_authenticated_pipe_user();
      64             :         }
      65             : 
      66           0 :         return false;
      67             : }
      68             : 
      69             : /**
      70             :  * The following two functions need to be called from inside the low-level BRL
      71             :  * code for oplocks correctness in smbd.  Since other utility binaries also
      72             :  * link in some of the brl code directly, these dummy functions are necessary
      73             :  * to avoid needing to link in the oplocks code and its dependencies to all of
      74             :  * the utility binaries.
      75             :  */
      76         471 : void contend_level2_oplocks_begin(files_struct *fsp,
      77             :                                   enum level2_contention_type type)
      78             : {
      79         471 :         if (shim.contend_level2_oplocks_begin) {
      80         471 :                 shim.contend_level2_oplocks_begin(fsp, type);
      81             :         }
      82         471 :         return;
      83             : }
      84             : 
      85         471 : void contend_level2_oplocks_end(files_struct *fsp,
      86             :                                 enum level2_contention_type type)
      87             : {
      88         471 :         if (shim.contend_level2_oplocks_end) {
      89         471 :                 shim.contend_level2_oplocks_end(fsp, type);
      90             :         }
      91         471 :         return;
      92             : }
      93             : 
      94       74722 : void become_root(void)
      95             : {
      96       74722 :         if (shim.become_root) {
      97       58560 :                 shim.become_root();
      98             :         }
      99       74722 :         return;
     100             : }
     101             : 
     102       74720 : void unbecome_root(void)
     103             : {
     104       74720 :         if (shim.unbecome_root) {
     105       58558 :                 shim.unbecome_root();
     106             :         }
     107       74720 :         return;
     108             : }
     109             : 
     110           0 : void exit_server(const char *reason)
     111             : {
     112           0 :         if (shim.exit_server) {
     113           0 :                 shim.exit_server(reason);
     114             :         }
     115           0 :         exit(1);
     116             : }
     117             : 
     118        5270 : void exit_server_cleanly(const char *const reason)
     119             : {
     120        5270 :         if (shim.exit_server_cleanly) {
     121        5270 :                 shim.exit_server_cleanly(reason);
     122             :         }
     123           0 :         exit(0);
     124             : }

Generated by: LCOV version 1.13