Compare commits

...

17 Commits

Author SHA1 Message Date
Asterisk Autobuilder
3c812dc35c Importing release summary for 10.4.1 release.
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.1@367855 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-29 19:17:56 +00:00
Asterisk Autobuilder
1efbf62a57 Commit 367844,367782
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.1@367852 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-29 19:12:26 +00:00
Asterisk Autobuilder
1c6aa76086 Create 10.4.1 tag
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.1@367565 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-24 13:40:29 +00:00
Asterisk Autobuilder
1fb8b57dbd Importing release summary for 10.4.0 release.
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0@365067 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-02 16:54:37 +00:00
Asterisk Autobuilder
7ac4bf201b Update .version, ChangeLog for 10.4.0
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0@365013 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-02 16:04:43 +00:00
Asterisk Autobuilder
dbe5bb1719 Create 10.4.0 tag
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0@365008 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-02 15:54:01 +00:00
Asterisk Autobuilder
ae642a1089 Importing release summary for 10.4.0-rc3 release.
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0-rc3@364765 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-01 17:46:27 +00:00
Asterisk Autobuilder
1e883659b7 Merge 364707 for 10.4.0-rc3
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0-rc3@364762 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-01 17:29:10 +00:00
Asterisk Autobuilder
72e7cf1f44 Create tag for 10.4.0-rc3
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0-rc3@364760 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-01 17:23:17 +00:00
Asterisk Autobuilder
370afef060 Use autotagged externals
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0-rc2@363354 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-24 18:25:46 +00:00
Asterisk Autobuilder
c9ca1327e8 Importing release summary for 10.4.0-rc2 release.
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0-rc2@363353 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-24 18:25:33 +00:00
Asterisk Autobuilder
ac9d340735 Merge r363103-363104, r363107, r363156 for -rc2
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0-rc2@363332 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-24 16:13:07 +00:00
Asterisk Autobuilder
1c5b8913eb Create 10.4.0-rc2 tag
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0-rc2@363330 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-24 15:40:58 +00:00
Asterisk Autobuilder
3db420ecc0 Use autotagged externals
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0-rc1@361171 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-04 18:21:23 +00:00
Asterisk Autobuilder
063c70b105 Importing release summary for 10.4.0-rc1 release.
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0-rc1@361169 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-04 18:21:10 +00:00
Asterisk Autobuilder
97b872a688 Importing files for 10.4.0-rc1 release.
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0-rc1@361168 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-04 18:20:57 +00:00
Asterisk Autobuilder
cfdb99d58d Creating tag for the release of asterisk-10.4.0-rc1
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0-rc1@361164 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-04 18:19:15 +00:00
9 changed files with 23515 additions and 36 deletions

3
.lastclean Normal file
View File

@@ -0,0 +1,3 @@
39

1
.version Normal file
View File

@@ -0,0 +1 @@
10.4.1

23264
ChangeLog Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,62 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Release Summary - asterisk-10.4.1</title></head>
<body>
<h1 align="center"><a name="top">Release Summary</a></h1>
<h3 align="center">asterisk-10.4.1</h3>
<h3 align="center">Date: 2012-05-29</h3>
<h3 align="center">&lt;asteriskteam@digium.com&gt;</h3>
<hr/>
<h2 align="center">Table of Contents</h2>
<ol>
<li><a href="#summary">Summary</a></li>
<li><a href="#contributors">Contributors</a></li>
<li><a href="#commits">Other Changes</a></li>
<li><a href="#diffstat">Diffstat</a></li>
</ol>
<hr/>
<a name="summary"><h2 align="center">Summary</h2></a>
<center><a href="#top">[Back to Top]</a></center><br/><p>This release has been made to address one or more security vulnerabilities that have been identified. A security advisory document has been published for each vulnerability that includes additional information. Users of versions of Asterisk that are affected are strongly encouraged to review the advisories and determine what action they should take to protect their systems from these issues.</p>
<p>Security Advisories: <a href="http://downloads.asterisk.org/pub/security/AST-2012-007.html">AST-2012-007</a>, <a href="http://downloads.asterisk.org/pub/security/AST-2012-008.html">AST-2012-008</a></p>
<p>The data in this summary reflects changes that have been made since the previous release, asterisk-10.4.0.</p>
<hr/>
<a name="contributors"><h2 align="center">Contributors</h2></a>
<center><a href="#top">[Back to Top]</a></center><br/><p>This table lists the people who have submitted code, those that have tested patches, as well as those that reported issues on the issue tracker that were resolved in this release. For coders, the number is how many of their patches (of any size) were committed into this release. For testers, the number is the number of times their name was listed as assisting with testing a patch. Finally, for reporters, the number is the number of issues that they reported that were closed by commits that went into this release.</p>
<table width="100%" border="0">
<tr>
<td width="33%"><h3>Coders</h3></td>
<td width="33%"><h3>Testers</h3></td>
<td width="33%"><h3>Reporters</h3></td>
</tr>
<tr valign="top">
<td>
2 bebuild<br/>
</td>
<td>
</td>
<td>
</td>
</tr>
</table>
<hr/>
<a name="commits"><h2 align="center">Commits Not Associated with an Issue</h2></a>
<center><a href="#top">[Back to Top]</a></center><br/><p>This is a list of all changes that went into this release that did not directly close an issue from the issue tracker. The commits may have been marked as being related to an issue. If that is the case, the issue numbers are listed here, as well.</p>
<table width="100%" border="1">
<tr><td><b>Revision</b></td><td><b>Author</b></td><td><b>Summary</b></td><td><b>Issues Referenced</b></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/tags/10.4.1?view=revision&revision=367565">367565</a></td><td>bebuild</td><td>Create 10.4.1 tag</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/tags/10.4.1?view=revision&revision=367852">367852</a></td><td>bebuild</td><td>Commit 367844,367782</td>
<td></td></tr></table>
<hr/>
<a name="diffstat"><h2 align="center">Diffstat Results</h2></a>
<center><a href="#top">[Back to Top]</a></center><br/><p>This is a summary of the changes to the source code that went into this release that was generated using the diffstat utility.</p>
<pre>
.version | 2
ChangeLog | 8
asterisk-10.4.0-summary.html | 505 -------------------------------
asterisk-10.4.0-summary.txt | 687 -------------------------------------------
channels/chan_iax2.c | 28 +
channels/chan_skinny.c | 29 +
6 files changed, 55 insertions(+), 1204 deletions(-)
</pre><br/>
<hr/>
</body>
</html>

View File

@@ -0,0 +1,90 @@
Release Summary
asterisk-10.4.1
Date: 2012-05-29
<asteriskteam@digium.com>
----------------------------------------------------------------------
Table of Contents
1. Summary
2. Contributors
3. Other Changes
4. Diffstat
----------------------------------------------------------------------
Summary
[Back to Top]
This release has been made to address one or more security vulnerabilities
that have been identified. A security advisory document has been published
for each vulnerability that includes additional information. Users of
versions of Asterisk that are affected are strongly encouraged to review
the advisories and determine what action they should take to protect their
systems from these issues.
Security Advisories: AST-2012-007, AST-2012-008
The data in this summary reflects changes that have been made since the
previous release, asterisk-10.4.0.
----------------------------------------------------------------------
Contributors
[Back to Top]
This table lists the people who have submitted code, those that have
tested patches, as well as those that reported issues on the issue tracker
that were resolved in this release. For coders, the number is how many of
their patches (of any size) were committed into this release. For testers,
the number is the number of times their name was listed as assisting with
testing a patch. Finally, for reporters, the number is the number of
issues that they reported that were closed by commits that went into this
release.
Coders Testers Reporters
2 bebuild
----------------------------------------------------------------------
Commits Not Associated with an Issue
[Back to Top]
This is a list of all changes that went into this release that did not
directly close an issue from the issue tracker. The commits may have been
marked as being related to an issue. If that is the case, the issue
numbers are listed here, as well.
+------------------------------------------------------------------------+
| Revision | Author | Summary | Issues Referenced |
|-------------+-----------+------------------------+---------------------|
| 367565 | bebuild | Create 10.4.1 tag | |
|-------------+-----------+------------------------+---------------------|
| 367852 | bebuild | Commit 367844,367782 | |
+------------------------------------------------------------------------+
----------------------------------------------------------------------
Diffstat Results
[Back to Top]
This is a summary of the changes to the source code that went into this
release that was generated using the diffstat utility.
.version | 2
ChangeLog | 8
asterisk-10.4.0-summary.html | 505 -------------------------------
asterisk-10.4.0-summary.txt | 687 -------------------------------------------
channels/chan_iax2.c | 28 +
channels/chan_skinny.c | 29 +
6 files changed, 55 insertions(+), 1204 deletions(-)
----------------------------------------------------------------------

View File

@@ -1922,24 +1922,25 @@ static void send_signaling(struct chan_iax2_pvt *pvt)
* we have received a destination call number. */
static int queue_signalling(struct chan_iax2_pvt *pvt, struct ast_frame *f)
{
struct signaling_queue_entry *new;
struct signaling_queue_entry *qe;
if (f->frametype == AST_FRAME_IAX || !pvt->hold_signaling) {
return 1; /* do not queue this frame */
} else if (!(new = ast_calloc(1, sizeof(struct signaling_queue_entry)))) {
} else if (!(qe = ast_calloc(1, sizeof(struct signaling_queue_entry)))) {
return -1; /* out of memory */
}
memcpy(&new->f, f, sizeof(new->f)); /* copy ast_frame into our queue entry */
if (new->f.datalen) { /* if there is data in this frame copy it over as well */
if (!(new->f.data.ptr = ast_calloc(1, new->f.datalen))) {
free_signaling_queue_entry(new);
/* copy ast_frame into our queue entry */
qe->f = *f;
if (qe->f.datalen) {
/* if there is data in this frame copy it over as well */
if (!(qe->f.data.ptr = ast_malloc(qe->f.datalen))) {
free_signaling_queue_entry(qe);
return -1;
}
memcpy(new->f.data.ptr, f->data.ptr, sizeof(*new->f.data.ptr));
memcpy(qe->f.data.ptr, f->data.ptr, qe->f.datalen);
}
AST_LIST_INSERT_TAIL(&pvt->signaling_queue, new, next);
AST_LIST_INSERT_TAIL(&pvt->signaling_queue, qe, next);
return 0;
}
@@ -4244,6 +4245,15 @@ static int schedule_delivery(struct iax_frame *fr, int updatehistory, int fromtr
struct ast_channel *owner = NULL;
struct ast_channel *bridge = NULL;
/*
* Clear fr->af.data if there is no data in the buffer. Things
* like AST_CONTROL_HOLD without a suggested music class must
* have a NULL pointer.
*/
if (!fr->af.datalen) {
memset(&fr->af.data, 0, sizeof(fr->af.data));
}
/* Attempt to recover wrapped timestamps */
unwrap_timestamp(fr);

View File

@@ -12987,8 +12987,6 @@ static void state_notify_build_xml(int state, int full, const char *exten, const
if ((state & AST_EXTENSION_RINGING) && sip_cfg.notifyringing) {
const char *local_display = exten;
char *local_target = ast_strdupa(mto);
const char *remote_display = exten;
char *remote_target = ast_strdupa(mfrom);
/* There are some limitations to how this works. The primary one is that the
callee must be dialing the same extension that is being monitored. Simply dialing
@@ -12998,28 +12996,16 @@ static void state_notify_build_xml(int state, int full, const char *exten, const
if ((caller = ast_channel_callback(find_calling_channel, NULL, p, 0))) {
char *cid_num;
char *connected_num;
int need;
ast_channel_lock(caller);
cid_num = S_COR(caller->caller.id.number.valid,
caller->caller.id.number.str, "");
need = strlen(cid_num) + strlen(p->fromdomain) + sizeof("sip:@");
remote_target = alloca(need);
snprintf(remote_target, need, "sip:%s@%s", cid_num, p->fromdomain);
remote_display = ast_strdupa(S_COR(caller->caller.id.name.valid,
caller->caller.id.name.str, ""));
connected_num = S_COR(caller->connected.id.number.valid,
caller->connected.id.number.str, "");
need = strlen(connected_num) + strlen(p->fromdomain) + sizeof("sip:@");
local_target = alloca(need);
snprintf(local_target, need, "sip:%s@%s", connected_num, p->fromdomain);
local_display = ast_strdupa(S_COR(caller->connected.id.name.valid,
caller->connected.id.name.str, ""));
snprintf(local_target, need, "sip:%s@%s", cid_num, p->fromdomain);
local_display = ast_strdupa(S_COR(caller->caller.id.name.valid,
caller->caller.id.name.str, ""));
ast_channel_unlock(caller);
caller = ast_channel_unref(caller);
}
@@ -13041,10 +13027,10 @@ static void state_notify_build_xml(int state, int full, const char *exten, const
"<target uri=\"%s\"/>\n"
"</remote>\n"
"<local>\n"
"<identity display=\"%s\">%s</identity>\n"
"<identity>%s</identity>\n"
"<target uri=\"%s\"/>\n"
"</local>\n",
remote_display, remote_target, remote_target, local_display, local_target, local_target);
local_display, local_target, local_target, mto, mto);
} else {
ast_str_append(tmp, 0, "<dialog id=\"%s\" direction=\"recipient\">\n", exten);
}
@@ -22818,6 +22804,10 @@ static int handle_request_update(struct sip_pvt *p, struct sip_request *req)
transmit_response(p, "501 Method Not Implemented", req);
return 0;
}
if (!p->owner) {
transmit_response(p, "481 Call/Transaction Does Not Exist", req);
return 0;
}
if (get_rpid(p, req)) {
struct ast_party_connected_line connected;
struct ast_set_party_connected_line update_connected;

View File

@@ -3104,6 +3104,10 @@ static void update_connectedline(struct skinny_subchannel *sub, const void *data
struct skinny_line *l = sub->line;
struct skinny_device *d = l->device;
if (!d) {
return;
}
if (!c->caller.id.number.valid
|| ast_strlen_zero(c->caller.id.number.str)
|| !c->connected.id.number.valid
@@ -4224,6 +4228,11 @@ static void *skinny_ss(void *data)
int res = 0;
int loop_pause = 100;
if (!d) {
ast_log(LOG_WARNING, "Device for line %s is not registered.\n", l->name);
return NULL;
}
ast_verb(3, "Starting simple switch on '%s@%s'\n", l->name, d->name);
len = strlen(sub->exten);
@@ -4332,7 +4341,7 @@ static int skinny_call(struct ast_channel *ast, char *dest, int timeout)
struct ast_var_t *current;
int doautoanswer = 0;
if (!d->registered) {
if (!d || !d->registered) {
ast_log(LOG_ERROR, "Device not registered, cannot call %s\n", dest);
return -1;
}
@@ -4731,7 +4740,13 @@ static int skinny_indicate(struct ast_channel *ast, int ind, const void *data, s
struct skinny_subchannel *sub = ast->tech_pvt;
struct skinny_line *l = sub->line;
struct skinny_device *d = l->device;
struct skinnysession *s = d->session;
struct skinnysession *s;
if (!d) {
ast_log(LOG_WARNING, "Device for line %s is not registered.\n", l->name);
return -1;
}
s = d->session;
if (!s) {
ast_log(LOG_NOTICE, "Asked to indicate '%s' condition on channel %s, but session does not exist.\n", control2str(ind), ast->name);
@@ -5462,6 +5477,11 @@ static int handle_transfer_button(struct skinny_subchannel *sub)
l = sub->line;
d = l->device;
if (!d) {
ast_log(LOG_WARNING, "Device for line %s is not registered.\n", l->name);
return -1;
}
if (!sub->related) {
/* Another sub has not been created so this must be first XFER press */
if (!(sub->substate == SUBSTATE_HOLD)) {
@@ -5506,6 +5526,11 @@ static int handle_callforward_button(struct skinny_subchannel *sub, int cfwdtype
struct skinny_device *d = l->device;
struct ast_channel *c = sub->owner;
if (!d) {
ast_log(LOG_WARNING, "Device for line %s is not registered.\n", l->name);
return 0;
}
if (d->hookstate == SKINNY_ONHOOK) {
d->hookstate = SKINNY_OFFHOOK;
transmit_speaker_mode(d, SKINNY_SPEAKERON);
@@ -6592,7 +6617,8 @@ static int handle_message(struct skinny_req *req, struct skinnysession *s)
int res = 0;
struct skinny_speeddial *sd;
struct skinny_device *d = s->device;
size_t len;
if ((!s->device) && (letohl(req->e) != REGISTER_MESSAGE && letohl(req->e) != ALARM_MESSAGE)) {
ast_log(LOG_WARNING, "Client sent message #%d without first registering.\n", req->e);
ast_free(req);
@@ -6662,8 +6688,13 @@ static int handle_message(struct skinny_req *req, struct skinnysession *s)
ast_log(LOG_WARNING, "Unsupported digit %d\n", digit);
}
sub->exten[strlen(sub->exten)] = dgt;
sub->exten[strlen(sub->exten)+1] = '\0';
len = strlen(sub->exten);
if (len < sizeof(sub->exten) - 1) {
sub->exten[len] = dgt;
sub->exten[len + 1] = '\0';
} else {
ast_log(AST_LOG_WARNING, "Dropping digit with value %d because digit queue is full\n", dgt);
}
} else
res = handle_keypad_button_message(req, s);
}

View File

@@ -1220,6 +1220,19 @@ static const struct permalias {
{ 0, "none" },
};
/*! \brief Checks to see if a string which can be used to evaluate functions should be rejected */
static int function_capable_string_allowed_with_auths(const char *evaluating, int writepermlist)
{
if (!(writepermlist & EVENT_FLAG_SYSTEM)
&& (
strstr(evaluating, "SHELL") || /* NoOp(${SHELL(rm -rf /)}) */
strstr(evaluating, "EVAL") /* NoOp(${EVAL(${some_var_containing_SHELL})}) */
)) {
return 0;
}
return 1;
}
/*! \brief Convert authority code to a list of options */
static const char *authority_to_str(int authority, struct ast_str **res)
{
@@ -3220,6 +3233,12 @@ static int action_getvar(struct mansession *s, const struct message *m)
return 0;
}
/* We don't want users with insufficient permissions using certain functions. */
if (!(function_capable_string_allowed_with_auths(varname, s->session->writeperm))) {
astman_send_error(s, m, "GetVar Access Forbidden: Variable");
return 0;
}
if (!ast_strlen_zero(name)) {
if (!(c = ast_channel_get_by_name(name))) {
astman_send_error(s, m, "No such channel");
@@ -3280,6 +3299,11 @@ static int action_status(struct mansession *s, const struct message *m)
idText[0] = '\0';
}
if (!(function_capable_string_allowed_with_auths(variables, s->session->writeperm))) {
astman_send_error(s, m, "Status Access Forbidden: Variables");
return 0;
}
if (all) {
if (!(iter = ast_channel_iterator_all_new())) {
ast_free(str);
@@ -4083,6 +4107,7 @@ static int action_originate(struct mansession *s, const struct message *m)
}
if (!ast_strlen_zero(app)) {
int bad_appdata = 0;
/* To run the System application (or anything else that goes to
* shell), you must have the additional System privilege */
if (!(s->session->writeperm & EVENT_FLAG_SYSTEM)
@@ -4093,10 +4118,13 @@ static int action_originate(struct mansession *s, const struct message *m)
TryExec(System(rm -rf /)) */
strcasestr(app, "agi") || /* AGI(/bin/rm,-rf /)
EAGI(/bin/rm,-rf /) */
strstr(appdata, "SHELL") || /* NoOp(${SHELL(rm -rf /)}) */
strstr(appdata, "EVAL") /* NoOp(${EVAL(${some_var_containing_SHELL})}) */
strcasestr(app, "mixmonitor") || /* MixMonitor(blah,,rm -rf) */
(strstr(appdata, "SHELL") && (bad_appdata = 1)) || /* NoOp(${SHELL(rm -rf /)}) */
(strstr(appdata, "EVAL") && (bad_appdata = 1)) /* NoOp(${EVAL(${some_var_containing_SHELL})}) */
)) {
astman_send_error(s, m, "Originate with certain 'Application' arguments requires the additional System privilege, which you do not have.");
char error_buf[64];
snprintf(error_buf, sizeof(error_buf), "Originate Access Forbidden: %s", bad_appdata ? "Data" : "Application");
astman_send_error(s, m, error_buf);
res = 0;
goto fast_orig_cleanup;
}