Security Advisories (1)
CVE-2026-5083 (2026-04-08)

Ado::Sessions versions through 0.935 for Perl generates insecure session ids. The session id is generated from a SHA-1 hash seeded with the built-in rand function, the epoch time, and the PID. The PID will come from a small set of numbers, and the epoch time may be guessed, if it is not leaked from the HTTP Date header. The built-in rand function is unsuitable for cryptographic usage. Predicable session ids could allow an attacker to gain access to systems. Note that Ado is no longer maintained, and has been removed from the CPAN index. It is still available on BackPAN.

NAME

Ado::Control - The base class for all controllers!

SYNOPSIS

It must be inherited by all controllers. Put code here only to be shared by it's subclasses or used in hooks.

package Ado::Control::Hello;
use Mojo::Base 'Ado::Control';

ATTRIBUTES

Ado::Control inherits all attributes from Mojolicious::Controller and implements the following new ones.

SUBROUTINES/METHODS

Methods shared among subclasses and in hooks

config

Overwrites the default helper "config" in Mojolicious::Plugin::DefaultHelpers which is actually an alias for "config" in Mojo. Returns configuration specific to the current controller package only.

#in Ado::Control::List or Ado::Control::Foo or...
my $myvalue = $c->config('mykey');
#a shortcut to 
my $myvalue = $app->config(__PACKAGE__)->{mykey}
...

To access the application-wide configuration use $c->app->config('key').

debug

A shortcut to:

$c->app->log->debug(@_);

list_for_json

Prepares a structure suitable for rendering as JSON for listing Ado::Model* objects returned by "select_range" in Ado::Model and returns it. Accepts two ARRAYREFs as parameters:

my $res = $c->list_for_json([$limit, $offset], \@list_of_objects);

Use this method to ensure uniform and predictable representation across all listing resources. See http://127.0.0.1:3000/ado-users/list.json for example output and "list" in Ado::Control::Ado::Users for the example source.

my @range = ($c->param('limit') || 10, $c->param('offset') || 0);
return $c->respond_to(
  json => $c->list_for_json(
    \@range, 
    [Ado::Model::Users->select_range(@range)])
);

require_formats

Require a list of relevant formats or renders "415 - Unsupported Media Type" with a text/html type and link to the resource using the first of the preferred formats, and returns false. If the URL is in the required format, returns true. Adds a header Content-Location with the proper URL to the resource.

#in an action serving only json
sub list {
    my $c = shift;
  $c->require_formats(['json']) || return;
  $c->debug('rendering json only');
    #your stuff here...
    return;
}

This method exists only to show more descriptive message to the end user and to give a chance to user agents to go to the proper resource URL.

SEE ALSO

Mojolicious::Controller, Ado::Manual::Controllers

AUTHOR

Красимир Беров (Krasimir Berov)

COPYRIGHT AND LICENSE

Copyright 2013 Красимир Беров (Krasimir Berov).

This program is free software, you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License v3 (LGPL-3.0). You may copy, distribute and modify the software provided that modifications are open source. However, software that includes the license may release under a different license.

See http://opensource.org/licenses/lgpl-3.0.html for more information.