|  | // Copyright 2023 The Go Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style | 
|  | // license that can be found in the LICENSE file. | 
|  |  | 
|  | //go:build unix | 
|  |  | 
|  | package runtime | 
|  |  | 
|  | import ( | 
|  | "internal/stringslite" | 
|  | ) | 
|  |  | 
|  | func secure() { | 
|  | initSecureMode() | 
|  |  | 
|  | if !isSecureMode() { | 
|  | return | 
|  | } | 
|  |  | 
|  | // When secure mode is enabled, we do one thing: enforce specific | 
|  | // environment variable values (currently we only force GOTRACEBACK=none) | 
|  | // | 
|  | // Other packages may also disable specific functionality when secure mode | 
|  | // is enabled (determined by using linkname to call isSecureMode). | 
|  |  | 
|  | secureEnv() | 
|  | } | 
|  |  | 
|  | func secureEnv() { | 
|  | var hasTraceback bool | 
|  | for i := 0; i < len(envs); i++ { | 
|  | if stringslite.HasPrefix(envs[i], "GOTRACEBACK=") { | 
|  | hasTraceback = true | 
|  | envs[i] = "GOTRACEBACK=none" | 
|  | } | 
|  | } | 
|  | if !hasTraceback { | 
|  | envs = append(envs, "GOTRACEBACK=none") | 
|  | } | 
|  | } |