kgretzky/evilginx2 · error

delete: %v

Error message

delete: %v

What it means

In 'lures delete <range>' with a comma/range list (e.g. '1,3-5'), a numeric token failed to parse with strconv.Atoi, so the deletion is aborted with the wrapped parse error. Validation guard on the ID-list input; no lures are deleted when this fires.

Source

Thrown at core/terminal.go:1084

						di = append(di, n)
					}
					if len(di) > 0 {
						rdi := t.cfg.DeleteLures(di)
						for _, id := range rdi {
							log.Info("deleted lure with ID: %d", id)
						}
					}
					return nil
				} else {
					rc := strings.Split(args[1], ",")
					di := []int{}
					for _, pc := range rc {
						pc = strings.TrimSpace(pc)
						rd := strings.Split(pc, "-")
						if len(rd) == 2 {
							b_id, err := strconv.Atoi(strings.TrimSpace(rd[0]))
							if err != nil {
								return fmt.Errorf("delete: %v", err)
							}
							e_id, err := strconv.Atoi(strings.TrimSpace(rd[1]))
							if err != nil {
								return fmt.Errorf("delete: %v", err)
							}
							for i := b_id; i <= e_id; i++ {
								di = append(di, i)
							}
						} else if len(rd) == 1 {
							b_id, err := strconv.Atoi(strings.TrimSpace(rd[0]))
							if err != nil {
								return fmt.Errorf("delete: %v", err)
							}
							di = append(di, b_id)
						}
					}
					if len(di) > 0 {
						rdi := t.cfg.DeleteLures(di)

View on GitHub (pinned to 4c0988a1d9)

Solutions

  1. Run `lures` to list valid numeric lure ids and build the range from those
  2. Use a plain numeric range like `lures delete 0-3` or a single id `lures delete 2`
  3. Trim stray whitespace/characters from the range string

Example fix

// before
lures delete 1-o
// after
lures delete 1-5
Defensive patterns

Strategy: validation

Validate before calling

func validRange(r string) bool {
    parts := strings.Split(r, "-")
    if len(parts) != 2 { return false }
    _, err1 := strconv.Atoi(strings.TrimSpace(parts[0]))
    _, err2 := strconv.Atoi(strings.TrimSpace(parts[1]))
    return err1 == nil && err2 == nil
}

Try / catch

if b, err := strconv.Atoi(s); err != nil {
    return fmt.Errorf("delete: %v", err)
}

Prevention

When it happens

Trigger: Running `lures delete 0-x`, `lures delete abc-3`, or a range whose endpoints contain whitespace/non-digits that Atoi rejects.

Common situations: Hand-typing a lure id range with typos, using ids listed with zero-padding or letters, or pasting a malformed range.

Related errors


AI-assisted analysis of kgretzky/evilginx2@4c0988a1d9 (2026-09-05). Data as JSON: /api/errors/0c423d4faeaa3ba4. Report an issue: GitHub.