From: Andre Noll Date: Fri, 1 Apr 2016 23:33:47 +0000 (+0200) Subject: Merge branch 'maint' X-Git-Tag: v0.5.6~45 X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=commitdiff_plain;h=9d8fdf8898418711558f70a9630b2444036d8285 Merge branch 'maint' A couple of overflow bugs and a aslignment issue, all detected by ubsan. Plus two unrelated old bugs. * maint: client: Fix lsatt completer. playlist: Do not update score if no playlist is open. Avoid member access within misaligned address for ancillary data buffer. mood.c: Avoid overflow in update_quadratic_deviation(). mood.c: Avoid integer underflow. mood.c: Avoid integer overflow. --- 9d8fdf8898418711558f70a9630b2444036d8285 diff --cc mood.c index d29c62c2,45b051a7..daa8196a --- a/mood.c +++ b/mood.c @@@ -446,16 -472,34 +446,16 @@@ static int64_t normalized_value(int64_ { if (!n || !qd) return 0; - return 100 * (n * x - sum) / (int64_t)int_sqrt(n * qd); + return 100 * (n * x - sum) / (int64_t)int_sqrt(n) / (int64_t)int_sqrt(qd); } -static long compute_num_played_score(struct afs_info *afsi) +static long compute_score(struct afs_info *afsi, long mood_score) { - return -normalized_value(afsi->num_played, statistics.num, + mood_score -= normalized_value(afsi->num_played, statistics.num, statistics.num_played_sum, statistics.num_played_qd); -} - -static long compute_last_played_score(struct afs_info *afsi) -{ - return -normalized_value(afsi->last_played, statistics.num, + mood_score -= normalized_value(afsi->last_played, statistics.num, statistics.last_played_sum, statistics.last_played_qd); -} - -static long compute_dynamic_score(const struct osl_row *aft_row) -{ - struct afs_info afsi; - int64_t score, nscore = 0, lscore = 0; - int ret; - - ret = get_afsi_of_row(aft_row, &afsi); - if (ret < 0) - return -100; - nscore = compute_num_played_score(&afsi); - lscore = compute_last_played_score(&afsi); - score = nscore + lscore; - return score; + return mood_score / 3; } static int add_afs_statistics(const struct osl_row *row)