Source file src/runtime/security_unix.go

     1  // Copyright 2023 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  //go:build unix
     6  
     7  package runtime
     8  
     9  func secure() {
    10  	initSecureMode()
    11  
    12  	if !isSecureMode() {
    13  		return
    14  	}
    15  
    16  	// When secure mode is enabled, we do one thing: enforce specific
    17  	// environment variable values (currently we only force GOTRACEBACK=none)
    18  	//
    19  	// Other packages may also disable specific functionality when secure mode
    20  	// is enabled (determined by using linkname to call isSecureMode).
    21  
    22  	secureEnv()
    23  }
    24  
    25  func secureEnv() {
    26  	var hasTraceback bool
    27  	for i := 0; i < len(envs); i++ {
    28  		if hasPrefix(envs[i], "GOTRACEBACK=") {
    29  			hasTraceback = true
    30  			envs[i] = "GOTRACEBACK=none"
    31  		}
    32  	}
    33  	if !hasTraceback {
    34  		envs = append(envs, "GOTRACEBACK=none")
    35  	}
    36  }
    37  

View as plain text