build: improve error handling and code quality
- Fix missing error handling in exportObject function - Add explicit warning for non-string variable rewrites - Improve documentation for maxRewriteValueLength constant Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: cpunion <8459+cpunion@users.noreply.github.com>
This commit is contained in:
@@ -235,8 +235,15 @@ func (p *context) compileGlobal(pkg llssa.Package, gbl *ssa.Global) {
|
|||||||
log.Println("==> NewVar", name, typ)
|
log.Println("==> NewVar", name, typ)
|
||||||
}
|
}
|
||||||
g := pkg.NewVar(name, typ, llssa.Background(vtype))
|
g := pkg.NewVar(name, typ, llssa.Background(vtype))
|
||||||
if value, ok := p.rewriteValue(name); ok && p.isStringType(typ) {
|
if value, ok := p.rewriteValue(name); ok {
|
||||||
|
if p.isStringType(typ) {
|
||||||
g.Init(pkg.ConstString(value))
|
g.Init(pkg.ConstString(value))
|
||||||
|
} else {
|
||||||
|
log.Printf("warning: ignoring rewrite for non-string variable %s (type: %v)", name, typ)
|
||||||
|
if define {
|
||||||
|
g.InitNil()
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if define {
|
} else if define {
|
||||||
g.InitNil()
|
g.InitNil()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -631,6 +631,8 @@ var (
|
|||||||
errXflags = errors.New("-X flag requires argument of the form importpath.name=value")
|
errXflags = errors.New("-X flag requires argument of the form importpath.name=value")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// maxRewriteValueLength limits the size of rewrite values to prevent
|
||||||
|
// excessive memory usage and potential resource exhaustion during compilation.
|
||||||
const maxRewriteValueLength = 1 << 20 // 1 MiB cap per rewrite value
|
const maxRewriteValueLength = 1 << 20 // 1 MiB cap per rewrite value
|
||||||
|
|
||||||
func addGlobalString(conf *Config, arg string, mainPkgs []string) {
|
func addGlobalString(conf *Config, arg string, mainPkgs []string) {
|
||||||
@@ -1087,7 +1089,10 @@ func exportObject(ctx *context, pkgPath string, exportFile string, data []byte)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
f.Write(data)
|
if _, err := f.Write(data); err != nil {
|
||||||
|
f.Close()
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
err = f.Close()
|
err = f.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return exportFile, err
|
return exportFile, err
|
||||||
|
|||||||
Reference in New Issue
Block a user