Skip to content

Commit 6b326e0

Browse files
committed
parse port in a more robust way
1 parent ff37527 commit 6b326e0

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

libvirt/domain.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -422,23 +422,29 @@ func setBootDevices(d *schema.ResourceData, domainDef *libvirtxml.Domain) {
422422
}
423423
}
424424

425-
func setConsoles(d *schema.ResourceData, domainDef *libvirtxml.Domain) {
425+
func setConsoles(d *schema.ResourceData, domainDef *libvirtxml.Domain) error {
426426
for i := 0; i < d.Get("console.#").(int); i++ {
427427
console := libvirtxml.DomainConsole{}
428428
prefix := fmt.Sprintf("console.%d", i)
429-
consoleTargetPortInt, err := strconv.Atoi(d.Get(prefix + ".target_port").(string))
430-
if err == nil {
431-
consoleTargetPort := uint(consoleTargetPortInt)
429+
430+
portStr := d.Get(prefix + ".target_port").(string)
431+
consoleTargetPortUint16, err := strconv.ParseUint(portStr, 10, 16)
432+
if err != nil {
433+
return fmt.Errorf("invalid port when parsing %s: %w", strconv.Quote(portStr), err)
434+
} else {
435+
consoleTargetPort := uint(consoleTargetPortUint16)
432436
console.Target = &libvirtxml.DomainConsoleTarget{
433437
Port: &consoleTargetPort,
434438
}
435439
}
440+
436441
if targetType, ok := d.GetOk(prefix + ".target_type"); ok {
437442
if console.Target == nil {
438443
console.Target = &libvirtxml.DomainConsoleTarget{}
439444
}
440445
console.Target.Type = targetType.(string)
441446
}
447+
442448
switch d.Get(prefix + ".type").(string) {
443449
case "tcp":
444450
sourceHost := d.Get(prefix + ".source_host")
@@ -472,6 +478,7 @@ func setConsoles(d *schema.ResourceData, domainDef *libvirtxml.Domain) {
472478
}
473479
domainDef.Devices.Consoles = append(domainDef.Devices.Consoles, console)
474480
}
481+
return nil
475482
}
476483

477484
func setDisks(d *schema.ResourceData, domainDef *libvirtxml.Domain, virConn *libvirt.Libvirt) error {

libvirt/resource_libvirt_domain.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,11 @@ func resourceLibvirtDomainCreate(ctx context.Context, d *schema.ResourceData, me
531531
}
532532

533533
setVideo(d, &domainDef)
534-
setConsoles(d, &domainDef)
534+
535+
if err := setConsoles(d, &domainDef); err != nil {
536+
return diag.FromErr(err)
537+
}
538+
535539
setCmdlineArgs(d, &domainDef)
536540
setFirmware(d, &domainDef)
537541
setBootDevices(d, &domainDef)

0 commit comments

Comments
 (0)