Skip to content

Commit 8771e99

Browse files
tas50claude
andcommitted
🐛 Fix remaining nil pointer dereferences in firewall resources
Address review: guard fw.Properties.SKU, fw.Properties.ProvisioningState, fw.Properties.ThreatIntelMode, fw.Properties.ManagementIPConfiguration, and ipConfig.Properties.PrivateIPAddress in the management IP config. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent feb11ae commit 8771e99

File tree

1 file changed

+43
-33
lines changed

1 file changed

+43
-33
lines changed

providers/azure/resources/network.go

Lines changed: 43 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2269,40 +2269,50 @@ func azureFirewallToMql(runtime *plugin.Runtime, fw network.AzureFirewall) (*mql
22692269
}
22702270
}
22712271
args := map[string]*llx.RawData{
2272-
"id": llx.StringDataPtr(fw.ID),
2273-
"name": llx.StringDataPtr(fw.Name),
2274-
"type": llx.StringDataPtr(fw.Type),
2275-
"location": llx.StringDataPtr(fw.Location),
2276-
"tags": llx.MapData(convert.PtrMapStrToInterface(fw.Tags), types.String),
2277-
"etag": llx.StringDataPtr(fw.Etag),
2278-
"properties": llx.DictData(props),
2279-
"skuTier": llx.StringDataPtr((*string)(fw.Properties.SKU.Tier)),
2280-
"skuName": llx.StringDataPtr((*string)(fw.Properties.SKU.Name)),
2281-
"provisioningState": llx.StringDataPtr((*string)(fw.Properties.ProvisioningState)),
2282-
"threatIntelMode": llx.StringDataPtr((*string)(fw.Properties.ThreatIntelMode)),
2283-
"natRules": llx.ArrayData(natRules, types.ResourceLike),
2284-
"applicationRules": llx.ArrayData(applicationRules, types.ResourceLike),
2285-
"networkRules": llx.ArrayData(networkRules, types.ResourceLike),
2286-
"ipConfigurations": llx.ArrayData(ipConfigs, types.ResourceLike),
2287-
}
2288-
if fw.Properties.ManagementIPConfiguration != nil {
2289-
ipConfig := fw.Properties.ManagementIPConfiguration
2290-
props, err := convert.JsonToDict(ipConfig.Properties)
2291-
if err != nil {
2292-
return nil, err
2293-
}
2294-
mqlIpConfig, err := CreateResource(runtime, "azure.subscription.networkService.firewall.ipConfig",
2295-
map[string]*llx.RawData{
2296-
"id": llx.StringDataPtr(ipConfig.ID),
2297-
"name": llx.StringDataPtr(ipConfig.Name),
2298-
"etag": llx.StringDataPtr(ipConfig.Etag),
2299-
"privateIpAddress": llx.StringDataPtr(ipConfig.Properties.PrivateIPAddress),
2300-
"properties": llx.DictData(props),
2301-
})
2302-
if err != nil {
2303-
return nil, err
2272+
"id": llx.StringDataPtr(fw.ID),
2273+
"name": llx.StringDataPtr(fw.Name),
2274+
"type": llx.StringDataPtr(fw.Type),
2275+
"location": llx.StringDataPtr(fw.Location),
2276+
"tags": llx.MapData(convert.PtrMapStrToInterface(fw.Tags), types.String),
2277+
"etag": llx.StringDataPtr(fw.Etag),
2278+
"properties": llx.DictData(props),
2279+
"natRules": llx.ArrayData(natRules, types.ResourceLike),
2280+
"applicationRules": llx.ArrayData(applicationRules, types.ResourceLike),
2281+
"networkRules": llx.ArrayData(networkRules, types.ResourceLike),
2282+
"ipConfigurations": llx.ArrayData(ipConfigs, types.ResourceLike),
2283+
}
2284+
if fw.Properties != nil {
2285+
args["provisioningState"] = llx.StringDataPtr((*string)(fw.Properties.ProvisioningState))
2286+
args["threatIntelMode"] = llx.StringDataPtr((*string)(fw.Properties.ThreatIntelMode))
2287+
if fw.Properties.SKU != nil {
2288+
args["skuTier"] = llx.StringDataPtr((*string)(fw.Properties.SKU.Tier))
2289+
args["skuName"] = llx.StringDataPtr((*string)(fw.Properties.SKU.Name))
2290+
}
2291+
if fw.Properties.ManagementIPConfiguration != nil {
2292+
ipConfig := fw.Properties.ManagementIPConfiguration
2293+
mgmtProps, err := convert.JsonToDict(ipConfig.Properties)
2294+
if err != nil {
2295+
return nil, err
2296+
}
2297+
var privateIP *llx.RawData = llx.NilData
2298+
if ipConfig.Properties != nil {
2299+
privateIP = llx.StringDataPtr(ipConfig.Properties.PrivateIPAddress)
2300+
}
2301+
mqlIpConfig, err := CreateResource(runtime, "azure.subscription.networkService.firewall.ipConfig",
2302+
map[string]*llx.RawData{
2303+
"id": llx.StringDataPtr(ipConfig.ID),
2304+
"name": llx.StringDataPtr(ipConfig.Name),
2305+
"etag": llx.StringDataPtr(ipConfig.Etag),
2306+
"privateIpAddress": privateIP,
2307+
"properties": llx.DictData(mgmtProps),
2308+
})
2309+
if err != nil {
2310+
return nil, err
2311+
}
2312+
args["managementIpConfiguration"] = llx.ResourceData(mqlIpConfig, "managementIpConfiguration")
2313+
} else {
2314+
args["managementIpConfiguration"] = llx.NilData
23042315
}
2305-
args["managementIpConfiguration"] = llx.ResourceData(mqlIpConfig, "managementIpConfiguration")
23062316
} else {
23072317
args["managementIpConfiguration"] = llx.NilData
23082318
}

0 commit comments

Comments
 (0)