marius-wieschollek / passwords

A simple, yet feature rich password manager for Nextcloud
GNU Affero General Public License v3.0
201 stars 39 forks source link

[BUG]: on app upgrade the error "($randomizer) must be of type Random\Randomizer, string given" appears #637

Closed creopard closed 5 months ago

creopard commented 5 months ago

⚠️ This issue respects the following points: ⚠️

Server Information

{
    "version": {
        "server": "28.0.2.5",
        "app": "2024.2.20",
        "lsr": false,
        "php": "8.2.12",
        "cronPhp": "8.2.12"
    },
    "environment": {
        "os": "Linux",
        "architecture": "x86_64",
        "bits": 64,
        "database": "mysql",
        "cron": "cron",
        "proxy": false,
        "sslProxy": false,
        "subdirectory": false
    },
    "services": {
        "images": "imagick",
        "favicons": "ddg",
        "previews": "default",
        "security": "hibp",
        "words": "auto",
        "previewApi": false,
        "faviconApi": false
    },
    "status": {
        "autoBackupRestored": false
    },
    "settings": {
        "channel": "stable",
        "nightlies": false,
        "handbook": false,
        "performance": 5
    },
    "encryption": {
        "sse": {
            "SSEv1r1": false,
            "SSEv1r2": true,
            "SSEv2r1": false,
            "SSEv3r1": false,
            "none": false,
            "default": "SSEv1r2"
        },
        "cse": {
            "CSEv1r1": false,
            "none": true,
            "default": "none"
        }
    }
}

Client Information

Browser and Version: Firefox 122 Client OS and Version: Win11 23H2

Bug description

After updating the passwords app to version 2024.2.20 the following errors appeared in the nextcloud log: TypeError OCA\Passwords\Provider\Words\RandomCharactersProvider::__construct(): Argument #1 ($randomizer) must be of type Random\Randomizer, string given, called in /home/apps/passwords/lib/AppInfo/Application.php on line 272

No new errors appeared since then, so I guess it's just an (minor) installation issue? Passwords app still works as intended.

Steps to reproduce

  1. upgrade already existing passwords app to version 2024.2.20

Expected behavior

  1. no errors should appear in the log

Nextcloud Logs

{
  "reqId": "hJPU2HeqLXYfjm2rN4kk",
  "level": 3,
  "time": "2024-02-05T21:29:41+00:00",
  "remoteAddr": "212.xxx.xxx.xxx",
  "user": "user",
  "app": "index",
  "method": "GET",
  "url": "/index.php/apps/passwords/api/1.0/service/favicon/default/32",
  "message": "OCA\\Passwords\\Provider\\Words\\RandomCharactersProvider::__construct(): Argument #1 ($randomizer) must be of type Random\\Randomizer, string given, called in /home/apps/passwords/lib/AppInfo/Application.php on line 272",
  "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0",
  "version": "28.0.2.5",
  "exception": {
    "Exception": "TypeError",
    "Message": "OCA\\Passwords\\Provider\\Words\\RandomCharactersProvider::__construct(): Argument #1 ($randomizer) must be of type Random\\Randomizer, string given, called in /home/apps/passwords/lib/AppInfo/Application.php on line 272",
    "Code": 0,
    "Trace": [
      {
        "file": "/home/apps/passwords/lib/AppInfo/Application.php",
        "line": 272,
        "function": "__construct",
        "class": "OCA\\Passwords\\Provider\\Words\\RandomCharactersProvider",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/Utility/SimpleContainer.php",
        "line": 175,
        "function": "OCA\\Passwords\\AppInfo\\{closure}",
        "class": "OCA\\Passwords\\AppInfo\\Application",
        "type": "->",
        "args": [
          "*** sensitive parameters replaced ***"
        ]
      },
      {
        "file": "/home/3rdparty/pimple/pimple/src/Pimple/Container.php",
        "line": 122,
        "function": "OC\\AppFramework\\Utility\\{closure}",
        "class": "OC\\AppFramework\\Utility\\SimpleContainer",
        "type": "->",
        "args": [
          "*** sensitive parameters replaced ***"
        ]
      },
      {
        "file": "/home/lib/private/AppFramework/Utility/SimpleContainer.php",
        "line": 142,
        "function": "offsetGet",
        "class": "Pimple\\Container",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/DependencyInjection/DIContainer.php",
        "line": 462,
        "function": "query",
        "class": "OC\\AppFramework\\Utility\\SimpleContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/DependencyInjection/DIContainer.php",
        "line": 440,
        "function": "queryNoFallback",
        "class": "OC\\AppFramework\\DependencyInjection\\DIContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/Utility/SimpleContainer.php",
        "line": 64,
        "function": "query",
        "class": "OC\\AppFramework\\DependencyInjection\\DIContainer",
        "type": "->"
      },
      {
        "file": "/home/apps/passwords/lib/AppInfo/Application.php",
        "line": 332,
        "function": "get",
        "class": "OC\\AppFramework\\Utility\\SimpleContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/Utility/SimpleContainer.php",
        "line": 175,
        "function": "OCA\\Passwords\\AppInfo\\{closure}",
        "class": "OCA\\Passwords\\AppInfo\\Application",
        "type": "->",
        "args": [
          "*** sensitive parameters replaced ***"
        ]
      },
      {
        "file": "/home/3rdparty/pimple/pimple/src/Pimple/Container.php",
        "line": 122,
        "function": "OC\\AppFramework\\Utility\\{closure}",
        "class": "OC\\AppFramework\\Utility\\SimpleContainer",
        "type": "->",
        "args": [
          "*** sensitive parameters replaced ***"
        ]
      },
      {
        "file": "/home/lib/private/AppFramework/Utility/SimpleContainer.php",
        "line": 142,
        "function": "offsetGet",
        "class": "Pimple\\Container",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/DependencyInjection/DIContainer.php",
        "line": 462,
        "function": "query",
        "class": "OC\\AppFramework\\Utility\\SimpleContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/DependencyInjection/DIContainer.php",
        "line": 440,
        "function": "queryNoFallback",
        "class": "OC\\AppFramework\\DependencyInjection\\DIContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/Utility/SimpleContainer.php",
        "line": 96,
        "function": "query",
        "class": "OC\\AppFramework\\DependencyInjection\\DIContainer",
        "type": "->"
      },
      {
        "function": "OC\\AppFramework\\Utility\\{closure}",
        "class": "OC\\AppFramework\\Utility\\SimpleContainer",
        "type": "->",
        "args": [
          "*** sensitive parameters replaced ***"
        ]
      },
      {
        "file": "/home/lib/private/AppFramework/Utility/SimpleContainer.php",
        "line": 83,
        "function": "array_map"
      },
      {
        "file": "/home/lib/private/AppFramework/Utility/SimpleContainer.php",
        "line": 128,
        "function": "buildClass",
        "class": "OC\\AppFramework\\Utility\\SimpleContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/Utility/SimpleContainer.php",
        "line": 146,
        "function": "resolve",
        "class": "OC\\AppFramework\\Utility\\SimpleContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/DependencyInjection/DIContainer.php",
        "line": 468,
        "function": "query",
        "class": "OC\\AppFramework\\Utility\\SimpleContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/DependencyInjection/DIContainer.php",
        "line": 440,
        "function": "queryNoFallback",
        "class": "OC\\AppFramework\\DependencyInjection\\DIContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/Utility/SimpleContainer.php",
        "line": 96,
        "function": "query",
        "class": "OC\\AppFramework\\DependencyInjection\\DIContainer",
        "type": "->"
      },
      {
        "function": "OC\\AppFramework\\Utility\\{closure}",
        "class": "OC\\AppFramework\\Utility\\SimpleContainer",
        "type": "->",
        "args": [
          "*** sensitive parameters replaced ***"
        ]
      },
      {
        "file": "/home/lib/private/AppFramework/Utility/SimpleContainer.php",
        "line": 83,
        "function": "array_map"
      },
      {
        "file": "/home/lib/private/AppFramework/Utility/SimpleContainer.php",
        "line": 128,
        "function": "buildClass",
        "class": "OC\\AppFramework\\Utility\\SimpleContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/Utility/SimpleContainer.php",
        "line": 146,
        "function": "resolve",
        "class": "OC\\AppFramework\\Utility\\SimpleContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/DependencyInjection/DIContainer.php",
        "line": 468,
        "function": "query",
        "class": "OC\\AppFramework\\Utility\\SimpleContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/DependencyInjection/DIContainer.php",
        "line": 440,
        "function": "queryNoFallback",
        "class": "OC\\AppFramework\\DependencyInjection\\DIContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/Utility/SimpleContainer.php",
        "line": 64,
        "function": "query",
        "class": "OC\\AppFramework\\DependencyInjection\\DIContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/Utility/SimpleContainer.php",
        "line": 197,
        "function": "get",
        "class": "OC\\AppFramework\\Utility\\SimpleContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/Utility/SimpleContainer.php",
        "line": 175,
        "function": "OC\\AppFramework\\Utility\\{closure}",
        "class": "OC\\AppFramework\\Utility\\SimpleContainer",
        "type": "->",
        "args": [
          "*** sensitive parameters replaced ***"
        ]
      },
      {
        "file": "/home/3rdparty/pimple/pimple/src/Pimple/Container.php",
        "line": 118,
        "function": "OC\\AppFramework\\Utility\\{closure}",
        "class": "OC\\AppFramework\\Utility\\SimpleContainer",
        "type": "->",
        "args": [
          "*** sensitive parameters replaced ***"
        ]
      },
      {
        "file": "/home/lib/private/AppFramework/Utility/SimpleContainer.php",
        "line": 142,
        "function": "offsetGet",
        "class": "Pimple\\Container",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/DependencyInjection/DIContainer.php",
        "line": 462,
        "function": "query",
        "class": "OC\\AppFramework\\Utility\\SimpleContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/DependencyInjection/DIContainer.php",
        "line": 440,
        "function": "queryNoFallback",
        "class": "OC\\AppFramework\\DependencyInjection\\DIContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/Utility/SimpleContainer.php",
        "line": 64,
        "function": "query",
        "class": "OC\\AppFramework\\DependencyInjection\\DIContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/AppFramework/App.php",
        "line": 149,
        "function": "get",
        "class": "OC\\AppFramework\\Utility\\SimpleContainer",
        "type": "->"
      },
      {
        "file": "/home/lib/private/Route/Router.php",
        "line": 315,
        "function": "main",
        "class": "OC\\AppFramework\\App",
        "type": "::"
      },
      {
        "file": "/home/lib/base.php",
        "line": 1069,
        "function": "match",
        "class": "OC\\Route\\Router",
        "type": "->"
      },
      {
        "file": "/home/index.php",
        "line": 39,
        "function": "handleRequest",
        "class": "OC",
        "type": "::"
      }
    ],
    "File": "/home/apps/passwords/lib/Provider/Words/RandomCharactersProvider.php",
    "Line": 43,
    "message": "OCA\\Passwords\\Provider\\Words\\RandomCharactersProvider::__construct(): Argument #1 ($randomizer) must be of type Random\\Randomizer, string given, called in /home/apps/passwords/lib/AppInfo/Application.php on line 272",
    "exception": [],
    "CustomMessage": "OCA\\Passwords\\Provider\\Words\\RandomCharactersProvider::__construct(): Argument #1 ($randomizer) must be of type Random\\Randomizer, string given, called in /home/apps/passwords/lib/AppInfo/Application.php on line 272"
  },
  "id": "65c21df35199a"
}

Browser Logs

No response

marius-wieschollek commented 5 months ago

The RandomCharactersProvider class is instantiated here. It should always get the correct Randomizer class injected.

My guess is that some part of the old code was cached and this caused the error. You can check if the functionality works by going into the app, opening the create password form and then click the generate password button. If a password is generated, it works.

creopard commented 5 months ago

@marius-wieschollek good point! Generating a password works flawlessly. It also does not create new error entries in the log. So I guess that's it :)