Coverage Report

Created: 2024-10-04 06:14

/src/ms-tpm-20-ref/TPMCmd/tpm/src/command/Hierarchy/ClearControl.c
Line
Count
Source (jump to first uncovered line)
1
/* Microsoft Reference Implementation for TPM 2.0
2
 *
3
 *  The copyright in this software is being made available under the BSD License,
4
 *  included below. This software may be subject to other third party and
5
 *  contributor rights, including patent rights, and no such rights are granted
6
 *  under this license.
7
 *
8
 *  Copyright (c) Microsoft Corporation
9
 *
10
 *  All rights reserved.
11
 *
12
 *  BSD License
13
 *
14
 *  Redistribution and use in source and binary forms, with or without modification,
15
 *  are permitted provided that the following conditions are met:
16
 *
17
 *  Redistributions of source code must retain the above copyright notice, this list
18
 *  of conditions and the following disclaimer.
19
 *
20
 *  Redistributions in binary form must reproduce the above copyright notice, this
21
 *  list of conditions and the following disclaimer in the documentation and/or
22
 *  other materials provided with the distribution.
23
 *
24
 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ""AS IS""
25
 *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26
 *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27
 *  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
28
 *  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29
 *  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30
 *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
31
 *  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32
 *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33
 *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
 */
35
#include "Tpm.h"
36
#include "ClearControl_fp.h"
37
38
#if CC_ClearControl  // Conditional expansion of this file
39
40
/*(See part 3 specification)
41
// Enable or disable the execution of TPM2_Clear command
42
*/
43
//  Return Type: TPM_RC
44
//      TPM_RC_AUTH_FAIL            authorization is not properly given
45
TPM_RC
46
TPM2_ClearControl(ClearControl_In* in  // IN: input parameter list
47
)
48
1
{
49
    // The command needs NV update.
50
1
    RETURN_IF_NV_IS_NOT_AVAILABLE;
51
52
    // Input Validation
53
54
    // LockoutAuth may be used to set disableLockoutClear to TRUE but not to FALSE
55
1
    if(in->auth == TPM_RH_LOCKOUT && in->disable == NO)
56
0
        return TPM_RC_AUTH_FAIL;
57
58
    // Internal Data Update
59
60
1
    if(in->disable == YES)
61
0
        gp.disableClear = TRUE;
62
1
    else
63
1
        gp.disableClear = FALSE;
64
65
    // Record the change to NV
66
1
    NV_SYNC_PERSISTENT(disableClear);
67
68
1
    return TPM_RC_SUCCESS;
69
1
}
70
71
#endif  // CC_ClearControl