몇 번 못 해봤지만, 국내에서 취약점을 보고했을 때, 곧바로 진지하게 들어주고 이에 대한 (소소하지만) 보상까지 받아본 경우는 살면서 처음이다(!).

별다른 기대 없이, 취약점이 너무 쉽게 재현 가능하고 돈에 관련된 거라 그냥 넘어갈 수 없어서 제보했던 건데 ㅋㅋㅋ

덕분에 책을 돈 걱정 없이 더 구매할 수 있었다 :D


신고

In [15]:from datetime import datetime; import time

In [16]: datetime.strftime(datetime.strptime('2016-09-20 20:00:13', '%Y-%m-%d %H:%M:%S'), '%Y.%m.%d %H:%M:%S KST')
Out[16]: '2016.09.20 20:00:13 KST'

In [17]: s = datetime.strptime('2016-09-20 20:00:13', '%Y-%m-%d %H:%M:%S')

In [18]: time.mktime(s.timetuple())
Out[18]: 1474369213.0

이건 자꾸 까먹어서 ㅠㅠ

신고

Since Android 5.1 (API Level 22), AlarmManager's setRepeating method forcefully raise intervals under 1 minute (60000 msec) to 1 minute. Although it is completely right decision because waking up phone every 15 seconds or 30 seconds is crazy, but SOMETIMES (for testing, researching, ...) we need such kind of 'bad' alarms. However, we can overcome this shortcoming by setting once-only alarm repetitively(not explicitly calling setRepeating but call set or setExact again and again, like a chain).


For example, previously we have alarms like this:

mAlarmManager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); Intent alarmIntent = new Intent(this, PeriodicWorker.class); alarmIntent.setAction(ACTION_WAKEUP); PendingIntent pendingAlarmIntent = PendingIntent.getService(this, 0, alarmIntent, 0); mAlarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), ALARM_INTERVAL, pendingAlarmIntent);

However, from the API Level 22 (Android 5.1), we have to do it manually like this:

if (mAlarmManager == null) mAlarmManager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
Intent alarmIntent = new Intent(this, PeriodicWorker.class);
alarmIntent.setAction(ACTION_WAKEUP);
PendingIntent pendingAlarmIntent = PendingIntent.getService(this, 0, alarmIntent, 0);
mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + ALARM_INTERVAL, pendingAlarmIntent);


신고