Skip to content

Commit b96cab7

Browse files
tas50claude
andcommitted
Fix nil pointer dereference in longTermRetentionPolicy
Extract weeklyRetention, monthlyRetention, and yearlyRetention into local variables inside the policy.Properties nil guard. Previously these fields were accessed directly on policy.Properties in the CreateResource call, which would panic if Properties was nil. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 2d711f3 commit b96cab7

File tree

3 files changed

+114
-5
lines changed

3 files changed

+114
-5
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,4 @@ providers-sdk/*/testutils/mockprovider/resources/*.resources.json
2525
providers/os/connection/snapshot/mock_volumemounter.go
2626
!providers-sdk/v1/mqlr
2727
settings.local.json
28+
*.lr.manifest.json

providers/azure/resources/azure.lr.versions

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,33 @@ azure.subscription.advisorService.timeSeries.scores 9.0.13
4242
azure.subscription.aks 9.0.0
4343
azure.subscription.aksService 9.0.1
4444
azure.subscription.aksService.cluster 9.0.1
45+
azure.subscription.aksService.cluster.aadProfile 11.4.28
46+
azure.subscription.aksService.cluster.aadProfile.adminGroupObjectIDs 11.4.28
47+
azure.subscription.aksService.cluster.aadProfile.enableAzureRBAC 11.4.28
48+
azure.subscription.aksService.cluster.aadProfile.id 11.4.28
49+
azure.subscription.aksService.cluster.aadProfile.managed 11.4.28
4550
azure.subscription.aksService.cluster.addonProfiles 9.0.1
4651
azure.subscription.aksService.cluster.agentPoolProfiles 9.0.1
4752
azure.subscription.aksService.cluster.apiServerAccessProfile 11.0.22
4853
azure.subscription.aksService.cluster.apiServerAuthorizedIPRanges 11.4.28
54+
azure.subscription.aksService.cluster.autoUpgradeProfile 11.4.28
55+
azure.subscription.aksService.cluster.autoUpgradeProfile.id 11.4.28
56+
azure.subscription.aksService.cluster.autoUpgradeProfile.nodeOSUpgradeChannel 11.4.28
57+
azure.subscription.aksService.cluster.autoUpgradeProfile.upgradeChannel 11.4.28
58+
azure.subscription.aksService.cluster.azureKeyVaultKmsEnabled 11.4.28
59+
azure.subscription.aksService.cluster.azureKeyVaultKmsNetworkAccess 11.4.28
4960
azure.subscription.aksService.cluster.createdAt 9.0.1
61+
azure.subscription.aksService.cluster.defenderEnabled 11.4.28
62+
azure.subscription.aksService.cluster.disableLocalAccounts 11.4.28
5063
azure.subscription.aksService.cluster.disableRunCommand 11.4.28
5164
azure.subscription.aksService.cluster.dnsPrefix 9.0.1
5265
azure.subscription.aksService.cluster.enablePrivateCluster 11.4.28
5366
azure.subscription.aksService.cluster.enablePrivateClusterPublicFQDN 11.4.28
5467
azure.subscription.aksService.cluster.fqdn 9.0.1
5568
azure.subscription.aksService.cluster.httpProxyConfig 9.0.1
5669
azure.subscription.aksService.cluster.id 9.0.1
70+
azure.subscription.aksService.cluster.imageCleanerEnabled 11.4.28
71+
azure.subscription.aksService.cluster.imageCleanerIntervalHours 11.4.28
5772
azure.subscription.aksService.cluster.kubernetesVersion 9.0.1
5873
azure.subscription.aksService.cluster.location 9.0.1
5974
azure.subscription.aksService.cluster.name 9.0.1
@@ -63,11 +78,13 @@ azure.subscription.aksService.cluster.podIdentityProfile 9.0.1
6378
azure.subscription.aksService.cluster.powerState 9.0.1
6479
azure.subscription.aksService.cluster.privateDnsZone 11.4.28
6580
azure.subscription.aksService.cluster.provisioningState 9.0.1
81+
azure.subscription.aksService.cluster.publicNetworkAccess 11.4.28
6682
azure.subscription.aksService.cluster.rbacEnabled 9.0.1
6783
azure.subscription.aksService.cluster.securityProfile 9.0.1
6884
azure.subscription.aksService.cluster.storageProfile 9.0.1
6985
azure.subscription.aksService.cluster.tags 9.0.1
7086
azure.subscription.aksService.cluster.workloadAutoScalerProfile 9.0.1
87+
azure.subscription.aksService.cluster.workloadIdentityEnabled 11.4.28
7188
azure.subscription.aksService.clusters 9.0.1
7289
azure.subscription.aksService.subscriptionId 9.0.1
7390
azure.subscription.authorizationService 9.0.1
@@ -226,17 +243,22 @@ azure.subscription.computeService.disks 9.0.1
226243
azure.subscription.computeService.subscriptionId 9.0.1
227244
azure.subscription.computeService.vm 9.0.1
228245
azure.subscription.computeService.vm.dataDisks 9.0.1
246+
azure.subscription.computeService.vm.encryptionAtHost 11.4.28
229247
azure.subscription.computeService.vm.extensions 9.0.1
230248
azure.subscription.computeService.vm.id 9.0.1
231249
azure.subscription.computeService.vm.isRunning 9.0.1
232250
azure.subscription.computeService.vm.location 9.0.1
233251
azure.subscription.computeService.vm.name 9.0.1
234252
azure.subscription.computeService.vm.osDisk 9.0.1
235253
azure.subscription.computeService.vm.properties 9.0.1
254+
azure.subscription.computeService.vm.proxyAgentEnabled 11.4.28
236255
azure.subscription.computeService.vm.publicIpAddresses 9.0.1
256+
azure.subscription.computeService.vm.secureBootEnabled 11.4.28
257+
azure.subscription.computeService.vm.securityType 11.4.28
237258
azure.subscription.computeService.vm.state 9.0.1
238259
azure.subscription.computeService.vm.tags 9.0.1
239260
azure.subscription.computeService.vm.type 9.0.1
261+
azure.subscription.computeService.vm.vtpmEnabled 11.4.28
240262
azure.subscription.computeService.vm.zones 9.0.1
241263
azure.subscription.computeService.vms 9.0.1
242264
azure.subscription.cosmosDb 9.0.0
@@ -251,6 +273,7 @@ azure.subscription.cosmosDbService.account.ipRangeFilter 11.4.28
251273
azure.subscription.cosmosDbService.account.isVirtualNetworkFilterEnabled 11.4.28
252274
azure.subscription.cosmosDbService.account.kind 9.0.1
253275
azure.subscription.cosmosDbService.account.location 9.0.1
276+
azure.subscription.cosmosDbService.account.minimalTlsVersion 11.4.28
254277
azure.subscription.cosmosDbService.account.name 9.0.1
255278
azure.subscription.cosmosDbService.account.properties 9.0.1
256279
azure.subscription.cosmosDbService.account.publicNetworkAccess 11.4.28
@@ -343,6 +366,16 @@ azure.subscription.keyVaultService.secret.version 9.0.1
343366
azure.subscription.keyVaultService.secret.versions 9.0.1
344367
azure.subscription.keyVaultService.subscriptionId 9.0.1
345368
azure.subscription.keyVaultService.vault 9.0.1
369+
azure.subscription.keyVaultService.vault.accessPolicies 11.4.28
370+
azure.subscription.keyVaultService.vault.accessPolicy 11.4.28
371+
azure.subscription.keyVaultService.vault.accessPolicy.applicationId 11.4.28
372+
azure.subscription.keyVaultService.vault.accessPolicy.certificatePermissions 11.4.28
373+
azure.subscription.keyVaultService.vault.accessPolicy.id 11.4.28
374+
azure.subscription.keyVaultService.vault.accessPolicy.keyPermissions 11.4.28
375+
azure.subscription.keyVaultService.vault.accessPolicy.objectId 11.4.28
376+
azure.subscription.keyVaultService.vault.accessPolicy.secretPermissions 11.4.28
377+
azure.subscription.keyVaultService.vault.accessPolicy.storagePermissions 11.4.28
378+
azure.subscription.keyVaultService.vault.accessPolicy.tenantId 11.4.28
346379
azure.subscription.keyVaultService.vault.autorotation 11.3.1
347380
azure.subscription.keyVaultService.vault.certificates 9.0.1
348381
azure.subscription.keyVaultService.vault.diagnosticSettings 9.0.1
@@ -354,6 +387,12 @@ azure.subscription.keyVaultService.vault.enabledForTemplateDeployment 11.4.28
354387
azure.subscription.keyVaultService.vault.id 9.0.1
355388
azure.subscription.keyVaultService.vault.keys 9.0.1
356389
azure.subscription.keyVaultService.vault.location 9.0.1
390+
azure.subscription.keyVaultService.vault.networkAcls 11.4.28
391+
azure.subscription.keyVaultService.vault.networkAcls.bypass 11.4.28
392+
azure.subscription.keyVaultService.vault.networkAcls.defaultAction 11.4.28
393+
azure.subscription.keyVaultService.vault.networkAcls.id 11.4.28
394+
azure.subscription.keyVaultService.vault.networkAcls.ipRules 11.4.28
395+
azure.subscription.keyVaultService.vault.networkAcls.virtualNetworkSubnetIds 11.4.28
357396
azure.subscription.keyVaultService.vault.privateEndpointConnections 11.4.24
358397
azure.subscription.keyVaultService.vault.properties 9.0.1
359398
azure.subscription.keyVaultService.vault.publicNetworkAccess 11.4.28
@@ -670,13 +709,51 @@ azure.subscription.networkService.outboundRule.id 9.0.8
670709
azure.subscription.networkService.outboundRule.name 9.0.8
671710
azure.subscription.networkService.outboundRule.properties 9.0.8
672711
azure.subscription.networkService.outboundRule.type 9.0.8
712+
azure.subscription.networkService.privateEndpoint 11.4.28
713+
azure.subscription.networkService.privateEndpoint.customNetworkInterfaceName 11.4.28
714+
azure.subscription.networkService.privateEndpoint.id 11.4.28
715+
azure.subscription.networkService.privateEndpoint.location 11.4.28
716+
azure.subscription.networkService.privateEndpoint.manualPrivateLinkServiceConnections 11.4.28
717+
azure.subscription.networkService.privateEndpoint.name 11.4.28
718+
azure.subscription.networkService.privateEndpoint.privateLinkServiceConnections 11.4.28
719+
azure.subscription.networkService.privateEndpoint.provisioningState 11.4.28
720+
azure.subscription.networkService.privateEndpoint.serviceconnection 11.4.28
721+
azure.subscription.networkService.privateEndpoint.serviceconnection.connectionStatus 11.4.28
722+
azure.subscription.networkService.privateEndpoint.serviceconnection.groupIds 11.4.28
723+
azure.subscription.networkService.privateEndpoint.serviceconnection.id 11.4.28
724+
azure.subscription.networkService.privateEndpoint.serviceconnection.name 11.4.28
725+
azure.subscription.networkService.privateEndpoint.serviceconnection.privateLinkServiceId 11.4.28
726+
azure.subscription.networkService.privateEndpoint.serviceconnection.requestMessage 11.4.28
727+
azure.subscription.networkService.privateEndpoint.subnetId 11.4.28
728+
azure.subscription.networkService.privateEndpoint.tags 11.4.28
729+
azure.subscription.networkService.privateEndpoint.type 11.4.28
730+
azure.subscription.networkService.privateEndpoints 11.4.28
673731
azure.subscription.networkService.probe 9.0.8
674732
azure.subscription.networkService.probe.etag 9.0.8
675733
azure.subscription.networkService.probe.id 9.0.8
676734
azure.subscription.networkService.probe.name 9.0.8
677735
azure.subscription.networkService.probe.properties 9.0.8
678736
azure.subscription.networkService.probe.type 9.0.8
679737
azure.subscription.networkService.publicIpAddresses 9.0.1
738+
azure.subscription.networkService.route 11.4.28
739+
azure.subscription.networkService.route.addressPrefix 11.4.28
740+
azure.subscription.networkService.route.hasBgpOverride 11.4.28
741+
azure.subscription.networkService.route.id 11.4.28
742+
azure.subscription.networkService.route.name 11.4.28
743+
azure.subscription.networkService.route.nextHopIpAddress 11.4.28
744+
azure.subscription.networkService.route.nextHopType 11.4.28
745+
azure.subscription.networkService.route.provisioningState 11.4.28
746+
azure.subscription.networkService.routeTable 11.4.28
747+
azure.subscription.networkService.routeTable.disableBgpRoutePropagation 11.4.28
748+
azure.subscription.networkService.routeTable.etag 11.4.28
749+
azure.subscription.networkService.routeTable.id 11.4.28
750+
azure.subscription.networkService.routeTable.location 11.4.28
751+
azure.subscription.networkService.routeTable.name 11.4.28
752+
azure.subscription.networkService.routeTable.provisioningState 11.4.28
753+
azure.subscription.networkService.routeTable.routes 11.4.28
754+
azure.subscription.networkService.routeTable.tags 11.4.28
755+
azure.subscription.networkService.routeTable.type 11.4.28
756+
azure.subscription.networkService.routeTables 11.4.28
680757
azure.subscription.networkService.securityGroup 9.0.1
681758
azure.subscription.networkService.securityGroup.defaultSecurityRules 9.0.1
682759
azure.subscription.networkService.securityGroup.etag 9.0.1
@@ -824,13 +901,19 @@ azure.subscription.postgreSqlService.database.id 9.0.1
824901
azure.subscription.postgreSqlService.database.name 9.0.1
825902
azure.subscription.postgreSqlService.database.type 9.0.1
826903
azure.subscription.postgreSqlService.flexibleServer 11.0.9
904+
azure.subscription.postgreSqlService.flexibleServer.activeDirectoryAuth 11.4.28
827905
azure.subscription.postgreSqlService.flexibleServer.configuration 11.0.9
906+
azure.subscription.postgreSqlService.flexibleServer.dataEncryptionType 11.4.28
828907
azure.subscription.postgreSqlService.flexibleServer.databases 11.0.9
829908
azure.subscription.postgreSqlService.flexibleServer.firewallRules 11.0.9
909+
azure.subscription.postgreSqlService.flexibleServer.geoBackupEncryptionKeyStatus 11.4.28
830910
azure.subscription.postgreSqlService.flexibleServer.id 11.0.9
831911
azure.subscription.postgreSqlService.flexibleServer.location 11.0.9
832912
azure.subscription.postgreSqlService.flexibleServer.name 11.0.9
913+
azure.subscription.postgreSqlService.flexibleServer.passwordAuth 11.4.28
914+
azure.subscription.postgreSqlService.flexibleServer.primaryEncryptionKeyStatus 11.4.28
833915
azure.subscription.postgreSqlService.flexibleServer.properties 11.0.9
916+
azure.subscription.postgreSqlService.flexibleServer.publicNetworkAccess 11.4.28
834917
azure.subscription.postgreSqlService.flexibleServer.tags 11.0.9
835918
azure.subscription.postgreSqlService.flexibleServer.type 11.0.9
836919
azure.subscription.postgreSqlService.flexibleServer.version 11.4.28
@@ -902,8 +985,18 @@ azure.subscription.sqlService.configuration.source 9.0.1
902985
azure.subscription.sqlService.configuration.type 9.0.1
903986
azure.subscription.sqlService.configuration.value 9.0.1
904987
azure.subscription.sqlService.database 9.0.1
988+
azure.subscription.sqlService.database.advancedThreatProtection 11.4.28
989+
azure.subscription.sqlService.database.advancedthreatprotection 11.4.28
990+
azure.subscription.sqlService.database.advancedthreatprotection.creationTime 11.4.28
991+
azure.subscription.sqlService.database.advancedthreatprotection.id 11.4.28
992+
azure.subscription.sqlService.database.advancedthreatprotection.state 11.4.28
905993
azure.subscription.sqlService.database.advisor 9.0.1
906994
azure.subscription.sqlService.database.auditingPolicy 9.0.1
995+
azure.subscription.sqlService.database.backupShortTermRetentionPolicy 11.4.28
996+
azure.subscription.sqlService.database.backupshorttermretentionpolicy 11.4.28
997+
azure.subscription.sqlService.database.backupshorttermretentionpolicy.diffBackupIntervalInHours 11.4.28
998+
azure.subscription.sqlService.database.backupshorttermretentionpolicy.id 11.4.28
999+
azure.subscription.sqlService.database.backupshorttermretentionpolicy.retentionDays 11.4.28
9071000
azure.subscription.sqlService.database.collation 9.0.1
9081001
azure.subscription.sqlService.database.connectionPolicy 9.0.1
9091002
azure.subscription.sqlService.database.createMode 9.0.1
@@ -915,6 +1008,13 @@ azure.subscription.sqlService.database.edition 9.0.1
9151008
azure.subscription.sqlService.database.elasticPoolName 9.0.1
9161009
azure.subscription.sqlService.database.failoverGroupId 9.0.1
9171010
azure.subscription.sqlService.database.id 9.0.1
1011+
azure.subscription.sqlService.database.longTermRetentionPolicy 11.4.28
1012+
azure.subscription.sqlService.database.longtermretentionpolicy 11.4.28
1013+
azure.subscription.sqlService.database.longtermretentionpolicy.id 11.4.28
1014+
azure.subscription.sqlService.database.longtermretentionpolicy.monthlyRetention 11.4.28
1015+
azure.subscription.sqlService.database.longtermretentionpolicy.weekOfYear 11.4.28
1016+
azure.subscription.sqlService.database.longtermretentionpolicy.weeklyRetention 11.4.28
1017+
azure.subscription.sqlService.database.longtermretentionpolicy.yearlyRetention 11.4.28
9181018
azure.subscription.sqlService.database.maxSizeBytes 9.0.1
9191019
azure.subscription.sqlService.database.name 9.0.1
9201020
azure.subscription.sqlService.database.readScale 9.0.1
@@ -1110,6 +1210,7 @@ azure.subscription.webService.appsite.configuration 9.0.1
11101210
azure.subscription.webService.appsite.connectionSettings 9.0.1
11111211
azure.subscription.webService.appsite.diagnosticSettings 11.3.0
11121212
azure.subscription.webService.appsite.enabled 11.4.28
1213+
azure.subscription.webService.appsite.endToEndEncryptionEnabled 11.4.28
11131214
azure.subscription.webService.appsite.ftp 11.3.31
11141215
azure.subscription.webService.appsite.functions 11.3.3
11151216
azure.subscription.webService.appsite.httpsOnly 11.4.28
@@ -1139,6 +1240,7 @@ azure.subscription.webService.appsiteconfig.ftpsState 11.4.28
11391240
azure.subscription.webService.appsiteconfig.http20Enabled 11.4.28
11401241
azure.subscription.webService.appsiteconfig.id 9.0.1
11411242
azure.subscription.webService.appsiteconfig.kind 9.0.1
1243+
azure.subscription.webService.appsiteconfig.minTlsCipherSuite 11.4.28
11421244
azure.subscription.webService.appsiteconfig.minTlsVersion 11.4.28
11431245
azure.subscription.webService.appsiteconfig.name 9.0.1
11441246
azure.subscription.webService.appsiteconfig.properties 9.0.1

providers/azure/resources/sql.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -844,16 +844,22 @@ func (a *mqlAzureSubscriptionSqlServiceDatabase) longTermRetentionPolicy() (*mql
844844
}
845845

846846
var weekOfYear int64
847-
if policy.Properties != nil && policy.Properties.WeekOfYear != nil {
848-
weekOfYear = int64(*policy.Properties.WeekOfYear)
847+
var weeklyRetention, monthlyRetention, yearlyRetention *string
848+
if policy.Properties != nil {
849+
weeklyRetention = policy.Properties.WeeklyRetention
850+
monthlyRetention = policy.Properties.MonthlyRetention
851+
yearlyRetention = policy.Properties.YearlyRetention
852+
if policy.Properties.WeekOfYear != nil {
853+
weekOfYear = int64(*policy.Properties.WeekOfYear)
854+
}
849855
}
850856

851857
res, err := CreateResource(a.MqlRuntime, "azure.subscription.sqlService.database.longtermretentionpolicy",
852858
map[string]*llx.RawData{
853859
"id": llx.StringDataPtr(policy.ID),
854-
"weeklyRetention": llx.StringDataPtr(policy.Properties.WeeklyRetention),
855-
"monthlyRetention": llx.StringDataPtr(policy.Properties.MonthlyRetention),
856-
"yearlyRetention": llx.StringDataPtr(policy.Properties.YearlyRetention),
860+
"weeklyRetention": llx.StringDataPtr(weeklyRetention),
861+
"monthlyRetention": llx.StringDataPtr(monthlyRetention),
862+
"yearlyRetention": llx.StringDataPtr(yearlyRetention),
857863
"weekOfYear": llx.IntData(weekOfYear),
858864
})
859865
if err != nil {

0 commit comments

Comments
 (0)